#include <bits/stdc++.h>
using namespace std;
const int N = 300010;
int n, K;
bool ok[N];
vector<pair<int, int> > v;
vector<vector<int> > g;
int tot = 0;
bool ask(int c) {
  tot++;
  printf("? %d\n", c + 1);
  fflush(stdout);
  char x;
  scanf(" %c", &x);
  if (x == 'Y') return true;
  return false;
}
void reset() {
  puts("R");
  fflush(stdout);
}
void answer(int d) {
  printf("! %d\n", d);
  fflush(stdout);
  exit(0);
}
int main() {
  scanf("%d%d", &n, &K);
  for (int i = 0; i < n; i++) {
    if (ask(i)) ok[i] = true;
  }
  for (int i = 0; i < n; i += K) {
    v.push_back(make_pair(i, min(n - 1, i + K - 1)));
  }
  g.resize((int)v.size() + 1);
  for (int i = 0; i < (int)v.size(); i++) {
    for (int k = v[i].first; k <= v[i].second; k++) {
      if (!ok[k]) g[i].push_back(k);
    }
  }
  for (int i = 0; i < (int)v.size(); i++) {
    for (int j = i + 1; j < (int)v.size(); j++) {
      if ((int)g[i].size() == 0) continue;
      reset();
      for (int k = 0; k < (int)g[i].size(); k++) {
        ask(g[i][k]);
      }
      for (int k = 0; k < K - (int)g[i].size(); k++) ask(g[i].back());
      for (int k = 0; k < (int)g[j].size(); k++) {
        if (ask(g[j][k])) ok[g[j][k]] = true;
      }
      for (int k = 0; k <= K - (int)g[j].size(); k++) ask(g[i].back());
      for (int k = 0; k < (int)g[i].size() - 1; k++) {
        if (ask(g[i][k])) ok[g[i][k]] = true;
      }
      g[j].clear();
      g[i].clear();
      for (int k = v[j].first; k <= v[j].second; k++)
        if (!ok[k]) g[j].push_back(k);
      for (int k = v[i].first; k <= v[i].second; k++)
        if (!ok[k]) g[i].push_back(k);
    }
  }
  int ans = 0;
  for (int i = 0; i < n; i++)
    if (!ok[i]) ans++;
  answer(ans);
  return 0;
}
