#include <bits/stdc++.h>
const int maxn = 1e6 + 7;
int vis[maxn], isp[maxn], A[maxn], tl, n, cnt1, X, opt;
int vis2[maxn];
void sieve(int n) {
  for (int i = 1; i <= n; ++i) {
    vis[i] = isp[i] = vis2[i] = 1;
  }
  isp[1] = 0;
  for (int i = 2; i * i <= n; ++i) {
    if (isp[i])
      for (int j = i * 2; j <= n; j += i) isp[j] = 0;
  }
}
int ask(int x) {
  if (!(1 <= x && x <= n)) return 0;
  opt++;
  assert(opt < 10000);
  printf("A %d\n", x);
  fflush(stdout);
  int res;
  scanf("%d", &res);
  return res;
}
int query_true(int x) {
  int false_answer = ask(x);
  for (int i = x; i <= n; i += x) false_answer -= vis[i];
  return false_answer;
}
void del(int x) {
  if (!(1 <= x && x <= n)) return;
  assert(1 <= x && x <= n);
  assert(x != 1);
  opt++;
  assert(opt < 10000);
  printf("B %d\n", x);
  for (int i = x; i <= n; i += x) {
    cnt1 -= vis[i];
    vis[i] = 0;
  }
  fflush(stdout);
  int res = 0;
  scanf("%d", &res);
}
void delete_first() {
  for (int i = 1; i <= 1000 && i <= n; ++i) {
    if (!isp[i]) continue;
    del(i);
  }
}
int count() { return cnt1; }
int main() {
  scanf("%d", &n);
  if (n == 1) {
    printf("C 1");
    fflush(stdout);
    return 0;
  }
  cnt1 = n;
  sieve(n);
  delete_first();
  int N = count();
  int M = ask(1);
  int x = 1;
  if (M != N) {
    for (int i = 2; i <= n; ++i) {
      if (!isp[i]) continue;
      int d = query_true(i);
      int j = i;
      if (d) x *= i;
      while (d) {
        if ((long long)j * i > n) break;
        j = j * i;
        if (j > n) break;
        int d1 = query_true(j);
        if (!d1)
          break;
        else
          x *= i;
      }
    }
    printf("C %d", x);
    fflush(stdout);
    return 0;
  } else {
    for (int i = 2; i <= n; ++i) {
      if (vis[i]) A[++tl] = i;
    }
    int sz = std::sqrt(tl) + 1;
    std::stack<int> stk;
    for (int i = 1; i <= tl; ++i) {
      del(A[i]);
      stk.push(A[i]);
      if (i == tl || i % sz == 0) {
        int cnt = ask(1);
        if (cnt > count()) {
          while (!stk.empty()) {
            int u = stk.top();
            stk.pop();
            if (ask(u)) {
              printf("C %d", u);
              fflush(stdout);
              return 0;
            }
          }
          assert(1);
        }
        while (!stk.empty()) stk.pop();
      }
    }
    printf("C %d", 1);
    fflush(stdout);
    return 0;
  }
  return 0;
}
