简单模拟
#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<algorithm>
#include<set>
#define inf (1ull<<63)-1
#define N 100005
#define maxn 100005
#define pb(a) push_back(a)
#define mem(a,b) memset(a,b,sizeof(a))
#define eps 1e-9
#define zero(a) fabs(a)<eps
#define LL long long
#define ULL unsigned long long
#define lson l,m,step<<1
#define rson m+1,r,step<<1|1
#define MOD 1000000007
#define mp(a,b) make_pair(a,b)
using namespace std;
int n,m;
string aa;
map <string , bool> ma;
void s(int a,int b,int *v)
{
aa+="1+2+";
if (a<=2){
aa+="3+";
*v = b+1;
}else {
aa+="4+5+";
if (a>b)
aa+="6+",*v =*v +1;
else
aa+="7+8+",*v =*v -1;
aa+="9+";
if (a<b+1)
{
aa+="10+",s(a-1,b,v);
aa+="11+",s(a-2,*v,v);
}
else
aa+="12+13+",s(a-3,*v,v);
aa+="14+";}
aa+="15+";}
int main()
{
int T,i,j,k;
ma.clear();
for (i=0;i<21;i++)
for (j=0;j<100;j++)
{
int z;
aa="16+17+18+19+20+";
s(i,j,&z);
aa+="21+";
ma[aa]=1;
}
cin>>T;
while (T--)
{
char sa[5];
string sb="";
while (cin>>sa)
{
sb+=sa;
sb+="+";
if(sa[0]=='2'&&sa[1]=='1')break;
}
if (ma[sb])cout<<"feasible"<<endl;
else cout<<"infeasible"<<endl;
}
return 0;
}