#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, m, x, a[N], t[5 * N], sz, ans[5 * N];
int Get(int v, int l, int r, int key) {
  if (l == r) {
    return r;
  }
  int mid = (r + l) >> 1;
  if (key <= t[v + v]) {
    return Get(v + v, l, mid, key);
  } else {
    return Get(v + v + 1, mid + 1, r, key - t[v + v]);
  }
}
void Update(int v, int l, int r, int pos, int val) {
  if (l == r) {
    t[v] = val;
    return;
  }
  int mid = (r + l) >> 1;
  if (pos <= mid) {
    Update(v + v, l, mid, pos, val);
  } else {
    Update(v + v + 1, mid + 1, r, pos, val);
  }
  t[v] = t[v + v] + t[v + v + 1];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> m >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  a[n + 1] = 2e9;
  for (int k = 1; k <= m; k++) {
    cin >> x;
    if (x >= 0) {
      sz++;
      ans[sz] = x;
      Update(1, 1, m, sz, 1);
    } else {
      for (int i = 1; i <= n + 1; i++) {
        if (a[i] > t[1]) {
          for (int j = i - 1; j >= 1; j--) {
            Update(1, 1, m, Get(1, 1, m, a[j]), 0);
          }
          break;
        }
      }
    }
  }
  if (!t[1]) {
    return cout << "Poor stack!", 0;
  }
  for (int i = 1; i <= t[1]; i++) {
    cout << ans[Get(1, 1, m, i)];
  }
}
