#include <bits/stdc++.h>
using namespace std;
const long double PI = (long double)(3.1415926535897932384626433832795);
int arr1[2001][2001], arr4[2001][2001];
int parity_check(int n) {
  int par = n;
  par = par ^ (par >> 1);
  par = par ^ (par >> 2);
  par = par ^ (par >> 4);
  par = par ^ (par >> 8);
  par = par ^ (par >> 16);
  if (par % 2 == 1) {
    return 1;
  } else {
    return 0;
  }
}
int long long gcd(int long long a, int long long b) {
  if (a == 0) {
    return b;
  }
  return gcd(b % a, a);
}
int sz[100001];
int long long lcm(int long long a, int long long b) {
  int long long pro = a * b;
  int long long ans = gcd(a, b);
  pro = pro / ans;
  return pro;
}
int long long fast_power(int long long a, int long long b, int long long p) {
  if (b == 0) {
    return (1 % p);
  }
  int long long t = fast_power(a, b / 2, p);
  int long long ans = (t * t) % p;
  if (b % 2) {
    ans = (ans * (a % p)) % p;
  }
  return ans;
}
int long long fact(int long long n, int long long mod) {
  int long long prod = 1;
  for (int long long i = 1; i <= n; i++) {
    prod = (prod * i) % mod;
  }
  return prod;
}
void dfs(int long long s, vector<int long long> v[], bool visited[],
         vector<int long long> &vec) {
  vec.push_back(s);
  visited[s] = 1;
  for (int long long i = 0; i < v[s].size(); i++) {
    if (!visited[v[s][i]]) {
      visited[v[s][i]] = 1;
      dfs(v[s][i], v, visited, vec);
    }
  }
}
void dfs1(int long long s, vector<int long long> v[], bool visited[],
          int long long count, int long long *maxi) {
  visited[s] = 1;
  for (int long long i = 0; i < v[s].size(); i++) {
    if (!visited[v[s][i]]) {
      visited[v[s][i]] = 1;
      dfs1(v[s][i], v, visited, count + 1, maxi);
    }
  }
  if ((*maxi) < count) {
    (*maxi) = count;
  }
}
int long long maxSum(int long long a[], int long long size) {
  int long long max_so_far = INT_MIN, max_ending_here = 0;
  for (int long long i = 0; i < size; i++) {
    max_ending_here = max_ending_here + a[i];
    if (max_so_far < max_ending_here) max_so_far = max_ending_here;
    if (max_ending_here < 0) max_ending_here = 0;
  }
  return max_so_far;
}
int long long ans = -1000000000000, start, en;
int long long maxCrossingSum(int long long arr[], int long long l,
                             int long long m, int long long h) {
  int long long sum = 0;
  int long long left_sum = INT_MIN;
  for (int long long i = m; i >= l; i--) {
    sum = sum + arr[i];
    if (sum > left_sum) left_sum = sum;
  }
  sum = 0;
  int long long right_sum = INT_MIN;
  for (int long long i = m + 1; i <= h; i++) {
    sum = sum + arr[i];
    if (sum > right_sum) right_sum = sum;
  }
  return left_sum + right_sum;
}
int long long maxSubSum(int long long arr[], int long long l, int long long h) {
  if (l == h) return arr[l];
  int long long m = (l + h) / 2;
  int long long a = max(max(maxSubSum(arr, l, m), maxSubSum(arr, m + 1, h)),
                        maxCrossingSum(arr, l, m, h));
  if (ans < a) {
    ans = a;
    start = l;
    en = h;
  }
  return a;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  int long long x, i, j, k;
  cin >> x;
  if (x % 4 == 1) {
    cout << "0 A";
  } else if (x % 4 == 0) {
    cout << "1 A";
  } else if (x % 4 == 2) {
    cout << "1 B";
  } else {
    cout << "2 A";
  }
  cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
  return 0;
}
