Why this code is correct for this problem

#include <bits/stdc++.h>

using namespace std;

int zap[15][2];
int ans[15];

int main()
{
int t;
cin>>t;

while(t--)
{
	int n,m,k,q;
	cin>>n>>m>>k>>q;
	for(int i=1; i<=q; i++)
		cin>>zap[i][0]>>zap[i][1];
	
	int xd;
	if(k == 3)
	{
		for(int i=1; i<=3; i++)
		{
			cout<<1<<' '<<1<<' '<<2<<' '<<1<<endl; 
			cout.flush(); 
			cin>>xd;
		}
		
		cout<<2<<' ';
		for(int i=1; i<=q; i++)
			cout<<m-1<<' ';
		cout<<endl;
		cout.flush();

		cout.flush();
		cin>>xd;
		if(xd == -1) return 0;
	}
	
	else
	{
		for(int i=1; i<=q; i++)
		{
			cout<<1<<' '<<zap[i][0]<<' '<<zap[i][1]<<' '<<m/2<<endl;
			cout.flush();
		
			cin>>ans[i];
		
		}	
	
		cout<<2<<' ';
		for(int i=1; i<=q; i++)
			cout<<ans[i]<<' ';
		cout<<endl;
		cout.flush();
	
		int xd;
		cin>>xd;
		if(xd == -1) return 0;
	}
}

}