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
#include "dzilib.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long

vector <int> divCnt;
int t, q, l;
long long c, n;

int countDiv (int x)
{
	int res = 0;
	for (int i = 1; i*i <= x; i++)
		if (x % i == 0)
		{
			if (i*i == x) res++;
			else res += 2;
		}
	return res;
}

void prec ()
{
	divCnt.resize(n+l+1);
	
	for (int i = 1; i <= n+l; i++)
		divCnt[i] = countDiv(i);
}

bool match (int x, vector <int> &pattern)
{
	for (int i = 1; i <= l; i++)
	{
		if (divCnt[x+i] != pattern[i-1])
		{
			return false;
		}
	}
		
	return true;
}

int main()
{

	t = GetT();
	q = GetQ();
	c = GetC();
	n = GetN();
	
	l = min({c-2, (ll)q/t-2, 200ll});

	prec();

	while(t--)
	{
		vector <int> pattern;
		for (int i = 1; i <= l; i++)
		{
			pattern.push_back(Ask(i));
		}

		for (int i = 1; i <= n; i++)
		{
			if (match(i, pattern))
			{
				Answer(i);
				break;
			}
		}
	}
	
	return 0;
}