/*
给两行,每行n个数据,判断使用栈(先进后出FILO)还是队列(先进先出FIFO)可以使第一行数据转化为第二行
如果为队列:则两行数据相同
如果为栈:则两行数据呈镜像
*/
#include <stdio.h>
#include <string.h>
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
int num[128]={0},left[128]={0},right[128]={0};/*由于下面用到memcmp,
(比较内存,如果上个案例的数据长度比这一次大,
则会有后半部分数据遗留)所以要每次都初始化*/
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
for(int i=0;i<n;i++)
{
scanf("%d",&m);
left[i]=right[n-i-1]=m;//left与right为相反字符串
}
int queue=!memcmp(num,left,sizeof(left));/*由于memcmp返回值为int型,所以不能使用bool;
当两者相等时,返回值为零,取反后赋给queue,则queue为真*/
int stack=!memcmp(num,right,sizeof(right));//同上
if(queue&&stack)
printf("both\n");
else if(queue)
printf("queue\n");
else if(stack)
printf("stack\n");
else
printf("neither\n");
}
return 0;
}