#include using namespace std; #define REP(i,n) for (int i = 0; i < (n); ++i) #define DREP(i,s,n) for(int i = (s); i < (n); i++) template inline bool chmin(T& a, T b) {if (a > b) {a = b;return true;}return false;} template inline bool chmax(T& a, T b) {if (a < b) {a = b;return true;}return false;} using ll = long long; using P = pair; using Pl = pair; using veci = vector; using vecl = vector; using vecveci = vector>; using vecvecl = vector>; const int MOD = 1000000007; const double pi = acos(-1); ll gcd(ll a, ll b) {if(b == 0) return a; else return gcd(b,a%b);} ll lcm(ll a, ll b) {return a*b/gcd(a,b);} int main() { ll A,B; cin >> A >> B; if(A > B) swap(A,B); if(A == 1 && B == 1) cout << 'Q' << endl; else if(A == 1 && B == 2) cout << 'Q' << endl; else { if(A%2 == 0) cout << 'P' << endl; else { if(B < A+2) cout << 'Q' << endl; else cout << 'P' << endl; } } return 0; } // int main() { // ll A,B; cin >> A >> B; // vecveci dp(11,veci(11)); // dp[0][0] = 0; // dp[0][1] = 1; // for(int i = 0; i < 11; i++) for(int j = i; j < 11; j++) { // if(j == 0) continue; // for(int k = j-1; k >= 0; k--) { // if(k < i) { // if(dp[k][i] == 0) dp[i][j] = 1; // } // else if(i == k) { // if(dp[i][k] == 1) dp[i][j] = 1; // } else { // if(dp[i][k] == 0) dp[i][j] = 1; // } // } // } // for(int i = 1; i <= 10; i++) { // for(int j = i; j <= 10; j++) cout << dp[i][j] << " "; // cout << endl; // } // }