Pradyumn recently studied a new topic called Random Numbers and Pseudo Random Numbers. He came across a fact that all the programming languages never creates perfectly random numbers. They follow a certain logic to create random numbers. That's why numbers generated are called Pseudo Random Numbers. Now, Pradyumn thought to make Pseudo Random Numbers himself. He created a following function
generateRandomNumbers(size) {
range = 1000000007
multiplierOne = 2017
multiplierSecond = 2027
lastNumber = 0
secondLastNumber = 1
maxNumberGeneratedTillNow = 0
list[size] // list of generated numbers
for(I = 1;I <= size; ++I) {
newNumber = (lastNumber * multiplierOne + secondLastNumber * multiplierSecond + maxNumberGeneratedTillNow) % range + 1
secondLastNumber = lastNumber
lastNumber = newNumber
list.ADD(newNumber)
}
return list
Pradyumn asked Anmol to test his logic. Anmol thought to check certain numbers that can be created by this number or not. Pradyumn is tired after creating the logic. Pradyumn needs your help to answer Anmol Queries.
INPUT CONSTRAINTS
1≤size≤106
1≤q≤105
1≤qi≤1000000007
INPUT FORMAT
Two space separated integers size and Q , where size denotes the size of randomly generated numbers and Q
denotes number of queries.
Q number of lines describing the query value on each line given by Anmol.
OUTPUT FORMAT
If number can be created from given values and function, output "YES" else "NO" without quotes
On generating random numbers according to above function(do it yourself). One number will be created which is 2028. As the Anmol asked for 2028. Answer will be "YES". And answer for 2018 will be "NO".