#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;
}