#define _USE_MATH_DEFINES
#include <algorithm>
#include <cstdio>
#include <functional>
#include <iostream>
#include <cfloat>
#include <climits>
#include <cstring>
#include <cmath>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <time.h>
#include <vector>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> i_i;
typedef pair<ll, int> ll_i;
typedef pair<double, int> d_i;
typedef pair<ll, ll> ll_ll;
typedef pair<double, double> d_d;
struct edge { int u, v; ll w; };

ll MOD = 1000000007;
ll _MOD = 1000000009;
double EPS = 1e-10;

bool is_prime(int m, int n) {
	int x = m * m + n * n;
	for (int y = 2; y * y <= x; y++) {
		if (x % y != 0) continue;
		int ry = sqrt((double)y) + EPS;
		for (int p = -ry; p <= ry; p++)
			for (int q = -ry; q <= ry; q++) {
				if (p * p + q * q != y) continue;
				if ((p * m + q * n) % y == 0 && (p * n - q * m) % y == 0)
					return false;
			}
	}
	return true;
}

int main() {
	int T; cin >> T;
	while (T--) {
		int m, n; cin >> m >> n;
		cout << (is_prime(m, n) ? 'P' : 'C') << endl;
	}
}