#P1290D. Coffee Varieties (hard version)

    ID: 5169 Type: RemoteJudge 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>constructive algorithmsgraphsinteractive*3000

Coffee Varieties (hard version)

No submission language available for this problem.

Description

This is the hard version of the problem. You can find the easy version in the Div. 2 contest. Both versions only differ in the number of times you can ask your friend to taste coffee.

This is an interactive problem.

You're considering moving to another city, where one of your friends already lives. There are nn cafés in this city, where nn is a power of two. The ii-th café produces a single variety of coffee aia_i.

As you're a coffee-lover, before deciding to move or not, you want to know the number dd of distinct varieties of coffees produced in this city.

You don't know the values a1,,ana_1, \ldots, a_n. Fortunately, your friend has a memory of size kk, where kk is a power of two.

Once per day, you can ask him to taste a cup of coffee produced by the café cc, and he will tell you if he tasted a similar coffee during the last kk days.

You can also ask him to take a medication that will reset his memory. He will forget all previous cups of coffee tasted. You can reset his memory at most 30 00030\ 000 times.

More formally, the memory of your friend is a queue SS. Doing a query on café cc will:

  • Tell you if aca_c is in SS;
  • Add aca_c at the back of SS;
  • If S>k|S| > k, pop the front element of SS.

Doing a reset request will pop all elements out of SS.

Your friend can taste at most 3n22k\dfrac{3n^2}{2k} cups of coffee in total. Find the diversity dd (number of distinct values in the array aa).

Note that asking your friend to reset his memory does not count towards the number of times you ask your friend to taste a cup of coffee.

In some test cases the behavior of the interactor is adaptive. It means that the array aa may be not fixed before the start of the interaction and may depend on your queries. It is guaranteed that at any moment of the interaction, there is at least one array aa consistent with all the answers given so far.

The first line contains two integers nn and kk (1kn10241 \le k \le n \le 1024, kk and nn are powers of two).

It is guaranteed that 3n22k15 000\dfrac{3n^2}{2k} \le 15\ 000.

Interaction

You begin the interaction by reading nn and kk.

  • To ask your friend to taste a cup of coffee produced by the café cc, in a separate line output

    ? cc

    Where cc must satisfy 1cn1 \le c \le n. Don't forget to flush, to get the answer.

    In response, you will receive a single letter Y (yes) or N (no), telling you if variety aca_c is one of the last kk varieties of coffee in his memory.

  • To reset the memory of your friend, in a separate line output the single letter R in upper case. You can do this operation at most 30 00030\ 000 times.
  • When you determine the number dd of different coffee varieties, output

    ! dd

In case your query is invalid, you asked more than 3n22k\frac{3n^2}{2k} queries of type ? or you asked more than 30 00030\ 000 queries of type R, the program will print the letter E and will finish interaction. You will receive a Wrong Answer verdict. Make sure to exit immediately to avoid getting other verdicts.

After printing a query do not forget to output end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use:

  • fflush(stdout) or cout.flush() in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • see documentation for other languages.

Hack format

The first line should contain the word fixed

The second line should contain two integers nn and kk, separated by space (1kn10241 \le k \le n \le 1024, kk and nn are powers of two).

It must hold that 3n22k15 000\dfrac{3n^2}{2k} \le 15\ 000.

The third line should contain nn integers a1,a2,,ana_1, a_2, \ldots, a_n, separated by spaces (1ain1 \le a_i \le n).

Input

The first line contains two integers nn and kk (1kn10241 \le k \le n \le 1024, kk and nn are powers of two).

It is guaranteed that 3n22k15 000\dfrac{3n^2}{2k} \le 15\ 000.

Samples

Sample Input 1

4 2
N
N
Y
N
N
N
N

Sample Output 1

? 1
? 2
? 3
? 4
R
? 4
? 1
? 2
! 3

Sample Input 2

8 8
N
N
N
N
Y
Y

Sample Output 2

? 2
? 6
? 4
? 5
? 2
? 5
! 6

Note

In the first example, the array is a=[1,4,1,3]a = [1, 4, 1, 3]. The city produces 33 different varieties of coffee (11, 33 and 44).

The successive varieties of coffee tasted by your friend are 1,4,1,3,3,1,41, 4, \textbf{1}, 3, 3, 1, 4 (bold answers correspond to Y answers). Note that between the two ? 4 asks, there is a reset memory request R, so the answer to the second ? 4 ask is N. Had there been no reset memory request, the answer to the second ? 4 ask is Y.

In the second example, the array is a=[1,2,3,4,5,6,6,6]a = [1, 2, 3, 4, 5, 6, 6, 6]. The city produces 66 different varieties of coffee.

The successive varieties of coffee tasted by your friend are 2,6,4,5,2,52, 6, 4, 5, \textbf{2}, \textbf{5}.