1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// Przyk艂adowe niepoprawne rozwi膮zanie do zadania Dzielniki.
#include "dzilib.h"
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<bits/stdc++.h>
#define pr pair
#define f first
#define s second
#define ll long long
#define mp make_pair
#define pll pr<ll,ll>
#define pii pr<int,int>
#define piii pr<int,pii>
using namespace std;
ll c,n;
const int hl[16]={1,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};
//void Answer(ll x)
//{
//	cout<<"Answer "<<x<<endl;
//}
//ll sx;
//void ax()
//{
//	cin>>sx;
//}
//ll Ask(ll x)
//{
////	cout<<"Ask "<<x<<' ';
//	x+=sx;
//	ll rt=0;
//	for(ll i=1;i*i<=x;i++)
//	{
//		if(x%i==0)
//		{
//			rt++;
//			if(x/i>i) rt++;
//		}
//	}
////	cout<<rt<<endl;
//	return rt;
//}
void sl()
{
//	ax();
	ll cm=1,cz=0;
	for(int i=1;i<16;i++)
	{
		if(cm>n) break;
		int df=hl[i]-hl[i-1];
		vector<ll> ps;
		for(int j=1;j<=2<<df;j++)
		{
			if(Ask(j*cm+cz)%hl[i]==0)
			{
				ps.push_back(j*cm+cz);
			}
		}
		cm<<=df;
		vector<ll> np;
		int g=0;
		while(ps.size()>1)
		{
			np.clear();
			g++;
			for(ll x:ps)
			{
				if(Ask(x+cm*2*g)%hl[i]==0)
				{
					np.push_back(x);
				}
			}
			ps=np;
		}
		cz=ps[0];
//		cout<<"Fn "<<cm<<' '<<n<<endl;
	}
	Answer(cm-cz%cm);
}
//int GetT()
//{
//	int x;
//	cin>>x;
//	return x;
//}
//int GetQ()
//{
//	int x;
//	cin>>x;
//	return x;
//}
//ll GetC()
//{
//	ll x;
//	cin>>x;
//	return x;
//}
//ll GetN()
//{
//	ll x;
//	cin>>x;
//	return x;
//}
int main() {
  int t = GetT();
  n = GetN();
  int q = GetQ();
  c = GetC();
  while(t--) sl();
  return 0;
}