#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
const int MOD = 1e9 + 7;
template <class T>
void read(T &x) {
  char ch;
  bool neg = false;
  for (ch = getchar(); !isdigit(ch); ch = getchar()) neg = ch == '-';
  x = ch - '0';
  for (ch = getchar(); isdigit(ch); ch = getchar()) (x *= 10) += ch - '0';
  x *= neg ? -1 : 1;
}
template <class T, class... Args>
void read(T &x, Args &...args) {
  read(x);
  read(args...);
}
template <class T>
void write(T x) {
  if (x < 0) {
    putchar('-');
    write(-x);
    return;
  }
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
template <class T>
void writei(T x) {
  write(x);
  putchar(' ');
}
template <class T>
void writeln(T x) {
  write(x);
  putchar('\n');
}
template <class T, class... Args>
void write(T x, Args &...args) {
  writei(x);
  writei(args...);
}
int a[N], f[N], pre[N], q[N], lef[N];
int t = 1;
void solve() {
  int n, m;
  read(n, m);
  for (int i = 1; i <= m; i++) {
    read(a[i]);
  }
  int j = 1;
  for (int i = 1; i <= n; i++) {
    if (i == a[j]) {
      f[i] = 1;
      j++;
    } else {
      if (j > 1)
        f[i] = f[i - (j - 1)] + 1;
      else
        f[i] = 1e9;
    }
    pre[i] = j - 1;
  }
  for (int i = 1; i <= n; i++) read(q[i]);
  for (int i = n; i; i--) {
    lef[i] = lef[i + 1] + (q[i] == -1);
  }
  int sz = 0;
  for (int i = 1; i <= n; i++) {
    if (q[i] == -1)
      sz -= pre[sz];
    else {
      if (f[sz + 1] > lef[i]) write(q[i]);
      sz++;
    }
  }
  if (!sz) cout << "Poor stack!";
}
int main() {
  if (fopen("..."
            ".inp",
            "r")) {
    freopen(
        "..."
        ".inp",
        "r", stdin);
    freopen(
        "..."
        ".out",
        "w", stdout);
  }
  while (t--) {
    solve();
  }
}
