#include<bits/stdc++.h>
#define sf scanf
#define pf printf
using namespace std;
int main()
{
// freopen("input.txt","rt",stdin);
// freopen("output.txt","wt",stdout);
stack < int > st;
queue < int > q;
priority_queue < int > pq;
bool stk[300];
bool qu[300];
bool pqu[300];
int n[1001];
int kase;
memset(stk,0,sizeof(stk));
memset(qu,0,sizeof(qu));
memset(pqu,0,sizeof(pqu));
while(sf("%d",&kase) != EOF)
{
int ss = 1,qq=1,ppqq = 1,nxt=0,flag =0,mm=0;
for(int j=0; j<kase; j++)
{
int x,y;
// for(int i=0; i<300; i++)
// {
// stk[i] = 0;
// qu[i] = 0;
// pqu[i] = 0;
// }
sf("%d %d",&x,&y);
if(x&1)
{
st.push(y);
q.push(y);
pq.push(y);
}
else
{
n[nxt] = y;
if(st.top() != n[nxt] && stk[mm-1])
{
stk[nxt] = 1;
}
if(q.front() != n[nxt] && qu[mm-1])
{
qu[nxt] = 1;
}
if(pq.top() != n[nxt] && !pqu[mm-1])
{
pqu[nxt] = 1;
}
cout << " TOP VALUES OF STACK " << st.top() << " " << n[nxt] << endl;
cout << " TOP VALUES OF Queue " << q.front() << " " << n[nxt] << endl;
cout << " TOP VALUES OF PQueue " << pq.top() << " " << n[nxt] << endl;
st.pop();
q.pop();
pq.pop();
nxt++;mm++;
}
}
// cout<<nxt<<" " << mm <<endl;
///for stack
for(int s=0; s<nxt; s++)
{
if(stk[s] != 0) {
ss=0;
break;
}
}
///for queue
for(int ku =0; ku<nxt; ku++)
{
if(qu[ku] != 0){
qq = 0;
break;
}
}
for(int pku=0; pku < nxt; pku++)
{
if(pqu[pku] != 0)
{
ppqq=0;
break;
}
}
if((ss && qq) || (ss && ppqq) || (qq && ppqq))
{
pf("not sure\n");
}
else if(ss)
{
pf("stack\n");
}
else if(qq)
{
pf("queue\n");
}
else if(ppqq)
{
pf("priority queue\n");
}
else
{
pf("impossible\n");
}
while(!q.empty() || !pq.empty() || !st.empty())
{
if(!q.empty())
{
q.pop();
}
if(!st.empty())
{
st.pop();
}
if(!pq.empty())
{
pq.pop();
}
}
}
return 0;
}