#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, m;
int a[N];
bool fl[N];
int q[N];
int e;
int tr[N * 4];
void update(int p, int l, int r, int x, int v) {
  if (l == r) {
    tr[p] += v;
    return;
  }
  if (x <= ((l + r) >> 1))
    update((p << 1), l, ((l + r) >> 1), x, v);
  else
    update((p << 1 | 1), ((l + r) >> 1) + 1, r, x, v);
  tr[p] = tr[(p << 1)] + tr[(p << 1 | 1)];
}
void myadd(int t) {
  q[e] = t;
  fl[e] = 1;
  update(1, 1, n, e, 1);
  e++;
}
int querypos(int p, int l, int r, int x) {
  if (l == r) return l;
  if (tr[(p << 1)] >= x) {
    return querypos((p << 1), l, ((l + r) >> 1), x);
  } else {
    return querypos((p << 1 | 1), ((l + r) >> 1) + 1, r, x - tr[(p << 1)]);
  }
}
void myerase() {
  vector<int> v;
  for (int i = 1; i <= m; ++i) {
    int p = querypos(1, 1, n, a[i]);
    if (p >= e) break;
    v.push_back(p);
  }
  for (auto p : v) {
    fl[p] = 0;
    update(1, 1, n, p, -1);
  }
}
int main() {
  scanf("%d%d", &n, &m);
  e = 1;
  for (int i = 1; i <= m; ++i) {
    scanf("%d", a + i);
  }
  for (int i = 0, t; i < n; ++i) {
    scanf("%d", &t);
    if (t == -1) {
      myerase();
    } else {
      myadd(t);
    }
  }
  int ff = 0;
  for (int i = 1; i <= e; ++i) {
    if (fl[i]) {
      putchar(q[i] + '0');
      ff = 1;
    }
  }
  if (!ff)
    puts("Poor stack!");
  else
    puts("");
  return 0;
}
