#include<iostream>
using namespace std;
int _del(int* a) //處理函數
{int i;
int flat=1;
for( i=0; i<20; i++)
{
if(a[i]==1 && i<8 ) //處理連續的小字
{
if(a[i+1]>0 && a[i+2]>0)
{ a[i]--; a[i+1]--; a[i+2]--;}
else {flat=0; break;}
}
if(a[i]==2 && i<8 ) //處理連續的小字
{
if(a[i+1]>1 && a[i+2]>1)
{ a[i]-=2; a[i+1]-=2; a[i+2]-=2;}
else {flat=0; break;}
}
if(a[i]==1 && i<18 && i>=10) //處理連續的大字
{
if(a[i+1]>0 && a[i+2]>0)
{ a[i]--; a[i+1]--; a[i+2]--;}
else {flat=0; break;}
}
if(a[i]==2 && i<18 && i>=10) //處理連續的大字
{
if(a[i+1]>1 && a[i+2]>1)
{ a[i]-=2; a[i+1]-=2; a[i+2]-=2;}
else {flat=0; break;}
}
if(a[i]==3)
{
a[i]-=3;//40 ;
}
}
return flat;
}
int main()//47
{
int min, MIN,b[20]={0}, a[20]={0}, i,flat2=0, n;
bool endw;
/*cout<<"please putin pai-num"<<endl;
cin>>n;
cout<<"please putin source pai"<<endl;
for( i=0; i<n; i++)//58
cin>>pai_source[i];*/
int pai_source[20]={2 ,3 ,4 ,5,7,10 ,13 ,20};
for( i=0 ; i<20; i++)//統計每張牌的個數
b[pai_source[i]-1]++;
for(i=0 ; i<20; i++)
cout<<b[i]<<" ";
cout<<endl;
for(i=0;i<20; i++)
{
for(int j=0;j<20; j++)
a[j]=b[j];
for(int f=0; f<20; f++) //試探增加每張牌,看否能和其他組合成一句話
//或三個相同的數。
{
a[f]++;
min=a[1]<a[6]? a[1]:a[6];
min=min<a[9]? min:a[9];//求小字中二,七,十中最小的那個數
MIN=b[11]<a[16]? a[11]:a[16];
MIN=MIN<a[19]?MIN:a[19]; //求大字中二,七,十中最小的那個數
for(int l=0; l<=min ; l++)
{
// 以便處理不考慮2 7 10 的一種情況。
if(l==1)
{ a[1]--; a[6]--; a[9]--;}
if(l==2)
{
a[1]-=2; a[6]-=2; a[9]-=2;//if(l==3)
}
for(int t=0; t<=MIN ; t++)
{
if(t==1)
{ a[11]--; a[16]--; a[19]--;}
if(t==2)
{
a[1]-=2; a[6]-=2; a[9]-=2;
}
if( _del(a) )
{flat2=1;goto endw;}
}
}
}
}
endw:
if(flat2) cout<<"ok!"<<endl;
else cout<<"no!"<<endl;
return 0;
}