Petr likes to come up with problems about randomly generated data. This time problem is about random permutation. He decided to generate a random permutation this way: he takes identity permutation of numbers from 1 to n and then 3n times takes a random pair of different elements and swaps them. Alex envies Petr and tries to imitate him in all kind of things. Alex has also come up with a problem about random permutation. He generates a random permutation just like Petr but swaps elements 7n+1 times instead of 3n times. Because it is more random, OK?!

You somehow get a test from one of these problems and now you want to know from which one.

Input

In the first line of input there is one integer n (10^{3} ≤ n ≤ 10^{6}).

In the second line there are n distinct integers between 1 and n — the permutation of size n from the test.

It is guaranteed that all tests except for sample are generated this way: First we choose n — the size of the permutation. Then we randomly choose a method to generate a permutation — the one of Petr or the one of Alex. Then we generate a permutation using chosen method.

Output

If the test is generated via Petr's method print "Petr" (without quotes). If the test is generated via Alex's method print "Um_nik" (without quotes).

Example

Input

5
2 4 5 1 3


Output

Petr

Note

Please note that the sample is not a valid test (because of limitations for n) and is given only to illustrate input/output format. Your program still has to print correct answer to this test to get AC.

Due to randomness of input hacks in this problem are forbidden.
#include <bits/stdc++.h>
using namespace std;
int min(int a, int b) {
  if (a < b) return a;
  return b;
}
int max(int a, int b) {
  if (a > b) return a;
  return b;
}
long long gcd(long long a, long long b) {
  if ((a == 0) || (b == 0)) return a + b;
  return gcd(b, a % b);
}
long long pow_mod(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = (res * a) % 1000000007;
    a = (a * a) % 1000000007;
    b >>= 1;
  }
  return (res % 1000000007);
}
long long pow_2(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = (res * a);
    a = (a * a);
    b >>= 1;
  }
  return res;
}
bool isPrime(long long a) {
  for (long long i = 3; (i * i) <= a; i += 2) {
    if ((a % i) == 0) return false;
  }
  if ((a != 2) && ((a % 2) == 0)) return false;
  if (a == 1) return false;
  return true;
}
string con_ll_to_str(long long a) {
  stringstream mystr;
  mystr << a;
  return mystr.str();
}
long long con_str_to_ll(string st) {
  long long numb = 0;
  long long len = st.size(), i, j = 0;
  for (i = len - 1; i >= 0; i--) {
    numb += (pow_2(10, j) * (st[i] - '0'));
    j++;
  }
  return numb;
}
long long baseno_to_decimal(string st, long long basee) {
  long long i = 0, j, anss = 0;
  for (j = (int)st.length() - 1; j >= 0; j--) {
    anss += (st[j] - '0') * pow_2(basee, i);
    i++;
  }
  return anss;
}
string decimal_to_string(long long num, long long basee) {
  long long i = 0, j, opop;
  string anss = "";
  vector<string> stri;
  stri.push_back("0");
  stri.push_back("1");
  stri.push_back("2");
  stri.push_back("3");
  stri.push_back("4");
  stri.push_back("5");
  stri.push_back("6");
  stri.push_back("7");
  stri.push_back("8");
  stri.push_back("9");
  stri.push_back("A");
  stri.push_back("B");
  stri.push_back("C");
  stri.push_back("D");
  stri.push_back("E");
  stri.push_back("F");
  if (num == 0) {
    return "0";
  }
  while (num) {
    opop = num % basee;
    anss += stri[opop];
    num /= basee;
  }
  reverse(anss.begin(), anss.end());
  return anss;
}
const int dx[] = {0, 1, 1, 1, 0, -1, -1, -1};
const int dy[] = {1, 1, 0, -1, -1, -1, 0, 1};
long long arr[1000010], qtree2[4000010];
void update2(int idx, int start, int en, int id) {
  if (start == en && start == id) {
    qtree2[idx]++;
  } else if (id > en || id < start) {
    return;
  } else {
    int m = ((start) + ((en - start) / 2));
    update2(2 * idx, start, m, id);
    update2(2 * idx + 1, m + 1, en, id);
    qtree2[idx] = qtree2[2 * idx] + qtree2[2 * idx + 1];
  }
}
int query22(int idx, int start, int en, int b, int e) {
  if (b > en || e < start) {
    return 0;
  } else if (start >= b && en <= e) {
    return qtree2[idx];
  } else {
    int m = ((start) + ((en - start) / 2));
    int q1 = query22(2 * idx, start, m, b, e);
    int q2 = query22(2 * idx + 1, m + 1, en, b, e);
    return q1 + q2;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long N, K, i, j, ans = 0;
  string st;
  cin >> N;
  for (i = 1; i <= N; i++) {
    cin >> arr[i];
  }
  for (i = N; i >= 1; i--) {
    ans += query22(1, 1, 1e6, 1, arr[i] - 1);
    update2(1, 1, 1e6, arr[i]);
  }
  cerr << "ans"
       << ": " << ans << "\n";
  if (N % 2) {
    if (ans % 2) {
      cout << "Petr";
    } else {
      cout << "Um_nik";
    }
  } else {
    if (ans % 2) {
      cout << "Um_nik";
    } else {
      cout << "Petr";
    }
  }
  return 0;
}
