#include <bits/stdc++.h>
using namespace std;
template <class C>
void mini(C& a4, C b4) {
  a4 = min(a4, b4);
}
template <class C>
void maxi(C& a4, C b4) {
  a4 = max(a4, b4);
}
template <class T1, class T2>
ostream& operator<<(ostream& out, pair<T1, T2> pair) {
  return out << "(" << pair.first << ", " << pair.second << ")";
}
template <class A, class B, class C>
struct Triple {
  A first;
  B second;
  C third;
};
template <class T>
void ResizeVec(T&, vector<long long>) {}
template <class T>
void ResizeVec(vector<T>& vec, vector<long long> sz) {
  vec.resize(sz[0]);
  sz.erase(sz.begin());
  if (sz.empty()) {
    return;
  }
  for (T& v : vec) {
    ResizeVec(v, sz);
  }
}
void Pol() {
  cout << "Polycarp\n";
  exit(0);
}
void Vas() {
  cout << "Vasiliy\n";
  exit(0);
}
int main() {
  ios_base::sync_with_stdio(0);
  cout << fixed << setprecision(10);
  double beg_clock = 1.0 * clock() / CLOCKS_PER_SEC;
  long long xp, yp, xv, yv;
  cin >> xp >> yp >> xv >> yv;
  ;
  if (xv < yv) {
    swap(xp, yp);
    swap(xv, yv);
  }
  if (xp <= xv && yp <= yv) {
    Pol();
  }
  if (xp + yp <= max(xv, yv)) {
    Pol();
  }
  if (xv < xp) {
    Vas();
  }
  long long tv = max(yv, xv - xp);
  long long tp = yp;
  if (tp <= tv) {
    Pol();
  } else {
    Vas();
  }
  return 0;
}
