semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char s[500],sub[500][5],subt[5];
	int a[500]={1,0};
	int n,i,j,h,t;
	scanf("%d\n",&n);
	gets(s);
	int len=strlen(s);
	for(i=0;i<=len-n;i++)
	{
           for(j=i;j<=i+n-1;j++)
	  sub[i][j-i]=s[j];
	  sub[i][n]='\0';
	}
	for(i=1;i<=len-n;i++)
	{
		h=1;
		for(j=0;j<=i-1;j++)
		{
		  if(strcmp(sub[i],sub[j])==0)
		  {
		   sub[i][0]='\0';a[j]=a[j]+1;h=0;break;		  }
		  }
		if(h==1) a[i]=a[i]+1;
	}
	for(i=0;i<=len-n-1;i++)
	{
           h=i;
	  for(j=i+1;j<=len-n;j++)
	  {
           if(a[j]>a[h]) h=j;
	  }
	  if(h!=i) {strcpy(subt,sub[h]);strcpy(sub[h],sub[i]);strcpy(sub [i],subt);t=a[h];a[h]=a[i];a[i]=t;}
	}
  if(a[0]==1) printf("NO\n");
  else
  {	
         printf("%d\n",a[0]);
	for(i=0;i<=len-n;i++)
	{
		if(a[i]==a[0])
		printf("%s\n",sub[i]);
	}
  }
}
char b[500][5]={' '};
int n;
int is(int i, int j);
int main()
{
	int i, j, k;
	scanf("%d", &n);
	getchar();
	char a[501]={' '};
	int max=0, bs[500]={0};
	scanf("%s", a);
	int s;
	s=strlen(a);
	for(i=0;i<=s-n;i++)
	{
		for(j=i,k=0;k<n;j++, k++)
		{			
			b[i][k]=a[j];
		}
	}
	char c[500]={' '};
	for(i=0;i<=s-n;i++)
	{
		if(c[i]=='1')
		{
			i++;
			continue;
		}
		else
		{
			for(j=0;j<=s-n;j++)
			{
				if(is(i, j))
				{
					bs[i]+=1;
					if(bs[i]>1)
						c[j]='1';				
				}
			}
		}
	}
	for(i=0;i<=s-n;i++)
		if(max<bs[i])
			max=bs[i];	
		if(max>1)
		{
			printf("%d\n", max);
			for(i=0;i<=s-n;i++)
			{
				if(bs[i]==max)
				{					
					printf("%s\n", b[i]);
				}
			}
		}
		else
			printf("NO\n");
		return 0;
}

int is(int i, int j)
{
	int k, s=0;
	for(k=0;k<n;k++)
	{
		if(b[i][k]==b[j][k])
			s+=1;
	}
	if(s==n)
		return 1;
	else
		return 0;
}
int main()
{
	void chuan(char (*p)[5],char *q,int n);
	char c[300],a[500][5]={'\0'},(*p)[5],*q;
	int n,s,i,j,k;
	int max[500]={0},da=0;
	scanf("%d",&n);
	scanf("%s",c);
	p=a;q=c;
	for(s=0;*q!='\0';q++)
		s++;
	for(i=0,q=c;i<s-n+1;i++,q++,p++)
	{
		chuan(p,q,n);
	}
	k=s-n+1;
/*	for(i=0;i<k;i++)
		printf("%s\n",a[i]);    */
	for(i=0;i<k;i++)
	{
		for(j=i+1;j<k;j++)
		{
//			printf("%s %s ",a[i],a[j]);
			if(strcmp(a[i],a[j])==0)
				max[i]++;
//			printf("%d %d\n",max[i],i);
		}
	}
	for(i=0;i<k;i++)
	{
		if(max[i]>da)
			da=max[i];
	}
	if(da==0)
		printf("NO");
	else
	{
		printf("%d\n",da+1);
		for(i=0;i<k;i++)
		{
			if(da==max[i])
				printf("%s\n",a[i]);
		}
	}
	return 0;
}
void chuan(char (*p)[5],char *q,int n)
{
	int i=0;
	for(i=0;i<n;i++)
	{
		*(*p+i)=*(q+i);
	}
}
void main()
{
	int n,i,j=0,s,t=0,m,q=0,d[250];char a[500],b[250][5];
	scanf("%d %s",&n,a);
	s=strlen(a);
    for(i=0;i<=s-n;i++)
	{
		for(j=0;j<n;j++)
		{
			b[i][j]=a[i+j];
		}
		b[i][n]=0;
	}
	
	for(i=0;i<=s-n;i++)
	{
		m=0;
		for(j=i+1;j<=s-n;j++)
		{
			if(strcmp(b[i],b[j])==0)
			{
				if(m==0)m=2;
			    else m=m+1;
			}
		}
		d[i]=m;
		if(d[i]>q)q=d[i];
	}
	if(q==0){printf("NO");}
	else 
	{
		printf("%d\n",q);
		for(i=0;i<=s-n;i++)
		{
			if(d[i]==q)printf("%s\n",b[i]);
		}
	}
}
//***********************************
//* &sup3;&Igrave;&ETH;ò&Atilde;&ucirc;&pound;&ordm;n-gram&acute;&reg;&AElig;&micro;&Iacute;&sup3;&frac14;&AElig;         ** 
//* ×÷&Otilde;&szlig;&pound;&ordm;&Agrave;&icirc;&Otilde;&aelig;&Ograve;&raquo; 1300012948        ** 
//* &Ecirc;±&frac14;&auml;&pound;&ordm;2013.12.13               ** 
//***********************************
int main()
{
     int count[500] = {0}, n, len, most = 1;
     char a[502], b[502][6];
     cin >> n >> a;
     len = strlen(a);
     for(int i = 0; i <= len - n; i++)
     {
             for(int j = 0, k = i; j < n; j++, k++)
             {
                     b[i][j] = a[k];
             }
     }
     for(int i = 0; i <= len - n; i++)
     {
             for(int j = i; j <= len - n; j++)
             {
                     if(strcmp(b[i], b[j]) == 0)
                     {
                                      count[i]++;
                     }
             }
     }
     for(int i = 0; i <= len - n; i++)
     {
             most = most > count[i] ? most : count[i];
     }
     if(most == 1)
     {
             cout << "NO" << endl;
     }
     else
     {
         cout << most << endl;
         for(int i = 0; i <= len - n; i++)
         {
                 if(count[i] == most)
                 {
                             cout << b[i] << endl;
                 }
         }
     }
     return 0;
}
int main()
{
	char str[600],a[600][10];
	unsigned int n,i,j,m,k,l;
	int b[600],t=1;
	scanf("%d",&n);
    scanf("%s",str);
	m=strlen(str);
	for(i=0;i<600;i++)
		b[i]=1;
	for(i=0;i<m-n+1;i++)
	{
		for(j=0;j<n;j++)
		    a[i][j]=str[i+j];
		a[i][n]='\0';
	}
	for(i=0;i<m-n+1;i++)
	{
		if(b[i]==1)
			for(j=i+1;j<m-n+1;j++)
			{
				k=0;
				for(l=0;l<n;l++)
					if(a[i][l]==a[j][l])
						k++;
				if(k==n)
				{
					b[i]++;
					
				}
			}


	}
	for(i=0;i<m-n+1;i++)
	{
		if(t<b[i])
			t=b[i];
	}
	if(t==1)
		printf("NO\n");
	else
	{
		printf("%d\n",t);
		for(i=0;i<m-n+1;i++)
		{
			if(b[i]==t)
				printf("%s\n",a[i]);
		}
	}
	return 0;
}
int freq[27][27][27][27];
int main ()
{
    int n,max,i,j,k,l;
    char str[505];
    cin>>n>>str;int len=strlen(str);
    if (n==2)
    {
             int fre[27][27];
             for (i=1;i<=26;i++)
                 for (j=1;j<=26;j++)
                     fre[i][j]=0;
             for (i=0;i<=len-2;i++)
             {
                 fre[str[i]-96][str[i+1]-96]++;
             }
             max=0;
             for (i=1;i<=26;i++)
                 for (j=1;j<=26;j++)
                 {
                     if (fre[i][j]>=max)max=fre[i][j];
                 }
             if (max==1){cout<<"NO";max=-1;}
             else cout<<max<<endl;
             for (i=0;i<=len-2;i++)
             {
                 if (fre[str[i]-96][str[i+1]-96]==max){cout<<str[i]<<str[i+1]<<endl;fre[str[i]-96][str[i+1]-96]=0;}
             }
    }
    else if (n==3)
    {
             int fre[27][27][27];
             for (i=1;i<=26;i++)
                 for (j=1;j<=26;j++)
                     for (k=1;k<=26;k++)
                         fre[i][j][k]=0;
             for (i=0;i<=len-3;i++)
             {
                 fre[str[i]-96][str[i+1]-96][str[i+2]-96]++;
                 //cout<<str[i]-96<<str[i+1]-96<<str[i+2]-96<<endl;
             }
             max=0;
             for (i=1;i<=26;i++)
                 for (j=1;j<=26;j++)
                     for (k=1;k<=26;k++)
                         if (fre[i][j][k]>=max)max=fre[i][j][k];
             if (max==1){cout<<"NO";max=-1;}
             else cout<<max<<endl;
             for (i=0;i<=len-2;i++)
             {
                 if (fre[str[i]-96][str[i+1]-96][str[i+2]-96]==max){cout<<str[i]<<str[i+1]<<str[i+2]<<endl;fre[str[i]-96][str[i+1]-96][str[i+2]-96]=0;}
             }
    }
    else 
    {

             for (i=1;i<=26;i++)
                 for (j=1;j<=26;j++)
                     for (k=1;k<=26;k++)
                         for (l=1;l<=26;l++)
                         freq[i][j][k][l]=0;
             for (i=0;i<=len-4;i++)
             {
                 freq[str[i]-96][str[i+1]-96][str[i+2]-96][str[i+3]-96]++;
                 //cout<<str[i]-96<<str[i+1]-96<<str[i+2]-96<<endl;
             }
             max=0;
             for (i=1;i<=26;i++)
                 for (j=1;j<=26;j++)
                     for (k=1;k<=26;k++)
                         for (l=1;l<=26;l++)
                         if (freq[i][j][k][l]>=max)max=freq[i][j][k][l];
             if (max==1){cout<<"NO";max=-1;}
             else cout<<max<<endl;
             for (i=0;i<=len-2;i++)
             {
                 if (freq[str[i]-96][str[i+1]-96][str[i+2]-96][str[i+3]-96]==max){cout<<str[i]<<str[i+1]<<str[i+2]<<str[i+3]<<endl;freq[str[i]-96][str[i+1]-96][str[i+2]-96][str[i+3]-96]=0;}
             }
    }
    //while (1);
}
int main()
{
    char a[501],b[501][501],d[501][501],str[501];
    int n,i,j,p=0,q=0,c[501],k=0,l,s;
    scanf("%d\n",&n);
    scanf("%s",a);
    for(i=0;i<501;i++)
        c[i]=1;
    for(i=0;i<strlen(a)-n+1;i++)
    {
        for(j=i;j<n+i;j++)
        {
            b[p][q]=a[j];
            q++;
        }
        p++;
        q=0;
    }
    for(i=0;i<p;i++)
    {
        for(j=i+1;j<p;j++)
        {
            if(strcmp(b[i],b[j])==0&&b[i][0]!='&')
            {
                c[k]+=1;
                for(s=0;s<n;s++)
                {
                    b[j][s]='&';
                }
                strcpy(d[k],b[i]);
            }
        }
        k++;
    }
    for(i=1;i<k;i++)
    {
        for(j=0;j<k-i;j++)
        {
            if(c[j]<c[j+1])
            {
                l=c[j];
                c[j]=c[j+1];
                c[j+1]=l;
                strcpy(str,d[j]);
                strcpy(d[j],d[j+1]);
                strcpy(d[j+1],str);
            }
        }
    }
    if(c[0]>1)
    {
        printf("%d",c[0]);
        for(i=0;i<k;i++)
        {
            if(c[i]==c[0])
            {
                printf("\n%s",d[i]);
            }
            else
                break;
        }
    }
    else
        printf("NO");
    return 0;
}
int main()
{
	int n,i,j,len,c[500]={0},max,zhi;
	char a[501],b[500][5];
	scanf("%d\n",&n);
	gets(a);
	len=strlen(a);
	for(i=0;i<=(len-n);i++)
	{
		for(j=0;j<n;j++)
		{
			b[i][j]=a[i+j];
		}
		b[i][n]='\0';
	}
	for(i=0;i<=(len-n);i++)
	{
		for(j=i;j<=(len-n);j++)
		{
			if(strcmp(b[i],b[j])==0)
			{
				c[i]++;
			}
		}
	}
	max=0;zhi=c[0];
	for(i=0;i<=(len-n);i++)
	{
		if(c[i]>zhi)
		{
			zhi=c[i];
			max=i;
		}
	}
	if(zhi==1) printf("NO");
	else
	{
		printf("%d\n",zhi);
		for(i=0;i<=(len-n);i++)
		{
			if(c[i]==zhi)
				printf("%s\n",b[i]);
		}
	}
	return 0;
}
int main()
{
    char input[501],word[501][7];
    char ctemp;
    int num,i,j,length,k,jishu[501],temp,m,count;
    cin>>num;
    for(i=0;i<501;i++) input[i]='\0';
    for(i=0;i<501;i++) jishu[i]=1;
    for(i=0;i<501;i++)
         for(j=0;j<7;j++) word[i][j]='\0';
    cin.get();
    cin.get(input,501);
    length=strlen(input);
    k=-1;
    for(i=0;i<length-num+1;i=i-num+1)
    {
                         k++;
                         for(j=0;j<num;j++) 
                         {
                                            word[k][j]=input[i];
                                            i++;
                         }
    }
    for(i=0;i<k+1;i++)
    {
                      for(j=i+1;j<k+1;j++)
                      {
                                      count=0;
                                      for(m=0;m<num;m++)
                                      {
                                                        if (word[i][m]!=word[j][m]) break;
                                                        else count++;
                                      }
                                      if (count==num) jishu[i]++;
                      }
    }
   // for(i=0;i<k+1;i++) cout<<word[i]<<" "<<jishu[i]<<endl;
    for(i=0;i<k;i++)
    {
                    for(j=0;j<k-i;j++)
                    {
                                      if (jishu[j]<jishu[j+1])
                                      {
                                                              temp=jishu[j];
                                                              jishu[j]=jishu[j+1];
                                                              jishu[j+1]=temp;
                                                              for(int m=0;m<num;m++)
                                                              {
                                                                      ctemp=word[j][m];
                                                                      word[j][m]=word[j+1][m];
                                                                      word[j+1][m]=ctemp;
                                                              }
                                      }
                    }
    }
    //for(i=0;i<k+1;i++) cout<<jishu[i]<<endl;
    if (jishu[0]>1)
    {
                    cout<<jishu[0]<<endl;
                    for(i=0;i<k+1;i++)
                    {
                                      if (jishu[i]==jishu[0]) cout<<word[i]<<endl;
                                      else break;
                    }
    }
    else cout<<"NO";
    cin.get();cin.get();cin.get();cin.get();
    return 0;            
}
int main(int argc, char* argv[])
{
	int n;
	scanf("%d",&n);
	char str[1000];
	scanf("%s",str);
	char s[1000][100];
	int i,len,z;
	int a[10000]={0};
    len=strlen(str);
	int k;
	for(i=0;i<=len-n;i++)
	{
		for(k=0;k<n;k++)
		{
		  s[i][k]=str[i+k];
		}
		s[i][n]='\0';
	}
    char base[100];
	for(k=0;k<=len-n;k++)
	{
		strcpy(base,s[k]);
	    for(i=0;i<=len-n;i++)
		   if(strcmp(base,s[i])==0)
		   {
			   a[k]++;
		   }
	}
	int temp=1;
	for(k=0;k<=len-n;k++)
	{
		if(a[k]>temp)
		{
			temp=a[k];
		}
	}
	char ch[100]="AMA";
	if(temp==1)
		printf("NO");
	else
	{
		printf("%d\n",temp);
		for(k=0;k<=len-n;k++)
		{
			if(strcmp(ch,s[k])==0)
				continue;
			else
			{
			  if(a[k]==temp)
			  {
				printf("%s\n",s[k]);
				for(z=k+1;z<=len-n;z++)
				{
					if(strcmp(s[k],s[z])==0)
					{
						strcpy(s[z],ch);
					}
				}
			  } 
			}
		} 
	}
	return 0;
}
int main(int argc, char* argv[])
{
	char str[501];
	char s[500][5];
	int n;
	scanf("%d",&n);
	scanf("%s",str);
	int i,j;
	int len=strlen(str);
	int num=len-n+1;
	for(i=0;i<num;i++){
		for(j=0;j<n;j++){
		s[i][j]=str[i+j];
		}
		s[i][j]='\0';
	
	}
	int total[500];
	for(i=0;i<500;i++){
	total[i]=1;
	}
	for(i=0;i<num-1;i++){
		for(j=i+1;j<num;j++){
	if(strcmp(s[i],s[j])==0) total[i]++;

	}
	}
	int max=2,shu=0,ji[500]={0},flag=0;
	for(i=0;i<num-1;i++){
		if(total[i]>=max){
			flag=1;
	max=total[i];
		}
	}
	for(i=0;i<num-1;i++){
		if(total[i]==max){
	ji[shu]=i;
	shu++;
	}}




	if(!flag) printf("NO\n");
	else {
		printf("%d\n",max);
		for(i=0;i<shu;i++){
	
	printf("%s\n",s[ji[i]]);
		}
	}

	
	return 0;
}
int main()
{
	int n,i,l,j,e,c[600]={0},m,d=0,f=0;
	char a[600],b[600][5];
	scanf("%d",&n);
	scanf("%s",a);
	l=strlen(a);
	for(i=0;i<=l-n;i++)
	{
		for(j=0;j<n;j++)
		{
			b[i][j]=a[i+j];
		}
		b[i][n]='\0';
	}
	for(i=0;i<=l-n;i++)
	{
		for(j=i+1;j<=l-n;j++)
		{
			e=strcmp(b[i],b[j]);
			if(e==0)
			{
				c[i]++;
			}
		}
	}
	m=c[0];
	for(i=0;i<=l-n;i++)
	{
		if(c[i]>m) m=c[i];
	}
	if(m==0) printf("NO");
	else
	{
		printf("%d\n",m+1);
		for(i=0;i<=l-n;i++)
		{
			if(c[i]==m)
			{
				printf("%s\n",b[i]);
			}
		}
	}
	return 0;
}
int main()
{
	char s[501]={'\0'},t[500][5]={'\0'},r[5]={'\0'};	
	int a[500]={0},n,m,i,j,k=0,p;
	scanf("%d\n",&m);
	gets(s);n=strlen(s);
	for(i=0;i<n-m+1;i++)
	{
		p=0;
		for(j=0;j<m;j++)
			r[j]=s[i+j];
		for(j=0;j<k;j++)
			if(strcmp(r,t[j])==0)
			{a[j]++;p++;}
		if(p==0)
		{
			strcpy(t[k],r);
			k++;a[k-1]++;
		}
	}
	p=a[0];
	for(i=0;i<k;i++)
	{
		if(p<a[i])
			p=a[i];
	}
	if(p==1)
		printf("NO");
	else
	{
	printf("%d",p);
	for(i=0;i<k;i++)
		if(a[i]==p)
			printf("\n%s",t[i]);
	}
	return 0;
}
int main()
{
  
    char a[500];
    char str[500][6]={{'\0'},{'\0'}}; 
    int c[500]={0}; 
    int n,l,i,j,max;
    scanf("%d",&n); 
    scanf("%s",a);
    l=strlen(a);
    for(i=0;i<=l-n;i++)
      for(j=0;j<=n-1;j++)
        str[i][j]=a[i+j];
    for(i=0;i<=l-n;i++)
    {
     for(j=i;j<=l-n;j++)
     if(strcmp(str[j],str[i])==0)
     c[i]++;
    }//??????????c[]
    max=c[0];
    for(i=1;i<=l-n;i++)
    if(c[i]>max) max=c[i]; //?????????
    if(max==1) printf("NO");
    else  
    {
      printf("%d\n",max); 
      for(i=0;i<=l-n;i++)
      if(c[i]==max) 
      printf("%s\n",str[i]);
    } 
    return 0;
}
//********************************
//*n-gram????               **
//*????? 1300012848        **
//*???2013.12.11             **
//********************************
int main()
{
	int n, k, i, j, l, maxc = 0, x = 0;
	char c[501];
	char strout[501][5];
	int a[501];//???????????
	for (i = 0; i < 501; i++)
		a[i] = 1; //???????????? ??????1
	cin >> n >> c;
	k = strlen(c); //??????????
	char *p = c; //??????? ?????????
	for (j = 0; j <= k - n; j++)
		for (l = j + 1; l <= k - n; l++)
		{
			for (i = 0; i < n; i++) //???????
				if(*(p+j+i) == *(p+l+i)) //??i+1?????????????
					continue;
				else
					break;
			if (i >= n) //????break??? ??????????
				a[j]++;
		}
	for	(i = 0;i < k - n; i++)
		if (a[i] >= maxc)
			maxc = a[i];
	for	(i = 0;i < k - n; i++)
		if (a[i] >= maxc) //???????????? ???? ??????????????
		{
			for (j = 0;j < n; j++)
				strout[x][j] = *(p+i+j);
			x++;
		}
	if (maxc == 1) //??????? ??NO
		cout << "NO" << endl;
	else
	{
		cout << maxc << endl;
		for (i = 0; i < x; i++)
		{
			for (j = 0;j < n; j++)
				cout << strout[i][j];
			cout << endl;
		}
	}
	return 0;
}
void main()
{
	int n;
	char s[1000];
	char a[1000][1000];
	int b[1000]={0};
	int len;
	int i;
	int j,k=0,h=0;
	int max=0,imax=0;
	scanf("%d",&n);
    scanf("%s",s);
	len=strlen(s);
	for(i=0;i<=len-n;i++)
	{
		h=0;
		for(j=i;j<i+n;j++)
		  a[k][h++]=s[j];
		a[k][h]='\0';
		k++;
	}
	for(i=0;i<k;i++)b[i]=0;
	for(i=0;i<k;i++)
	{
		for(j=0;j<k;j++)
		{
			if(strcmp(a[i],a[j])==0)b[i]++;
		}
	}
	//??????????????????
	for(i=0;i<k;i++)
		if(b[i]>max)
		  max=b[i];
		
		if(max==1)printf("NO\n");
		else 
		{printf("%d\n",max);
			for(i=0;i<k;i++)
			{
				if(b[i]==max)
				{
					printf("%s\n",a[i]);
					for(j=0;j<k;j++)
					{
						if(strcmp(a[i],a[j])==0)
						{
							b[j]=0;
						}
					}
				}
			}
		}
}
int main()
{
	int n,i,j,l;
	char s[MAX],zichuan[MAX][MAX],temp[MAX];        //temp?????????zichuan???????????
	scanf("%d",&n);
	getchar();
	gets(s);
	int len=strlen(s);
	int k=0;                           //k+1?????????
	int count[500]={0};                    //?zichuan??????????????
	for (j=0;j<n;j++)
	{
		zichuan[0][j]=s[j];
	}
	zichuan[0][n]=0;
	int flag;
	for (i=1;i<=len-n;i++)
	{
		flag=0;
		for (j=0;j<n;j++)
		{
			temp[j]=s[j+i];
		}
		temp[n]=0;
		for (l=0;l<=k;l++)
		{
			if (strcmp(zichuan[l],temp)==0)
			{                                      
				count[l]++;        //?????\0???
				flag=1;            //???????????????
				break;
			}
		}
		if (flag!=1)            //flag?????????????
		{
			k++;
			strcpy(zichuan[k],temp);
		}
	}
	int maxcount=0;
	for (i=0;i<=k;i++)
	{
		if (count[i]>maxcount)
			maxcount=count[i];
	}
	maxcount++;
	if (maxcount==1)
		printf("NO");
	else
	{
		printf("%d\n",maxcount);
		for (i=0;i<=k;i++)
		{
			if (count[i]==maxcount-1)
				printf("%s\n",zichuan[i]);
		}
	}
	return 0;
}
int cmp(char s[],int x,int y,int n)
{
    int i;
    for(i=0;i<n;i++)
        if(s[x+i]!=s[y+i]) return 0;
    return 1;
}
int main()
{
    char s[600];
    int n,l,a[600]={0},b[600]={0},i,j,k=0,t;
    scanf("%d\n",&n);
    gets(s);
    l=strlen(s);
    for(i=0;i<l+1-n;i++)
    {
        t=1;
        for(j=0;j<k;j++)
            if(cmp(s,i,b[j],n))
            {
                a[j]++;
                t=0;
            }
        if(t) b[k++]=i;
    }
    t=0;
    for(i=0;i<k;i++)
        if(a[i]>t) t=a[i];
    if(t)
    {
    printf("%d\n",t+1);
    for(i=0;i<k;i++)
        if(a[i]==t)
        {
            for(j=b[i];j<b[i]+n;j++)
                printf("%c",s[j]);
            printf("\n");
        }
    }
    else printf("NO\n");
}
//********************************
//*???3.n-gram???? **
//*?????? 1300017623 **
//*???2013.12.11  **
//********************************
int main()
{
	char a[500][6]; //????n-gram??
	char (*p)[6] = a;
	int b[500] = {0}; //????
	int *q = b;
	char c[500]; //?????
	char *r = c;
	int n, m = 1, i, j, k = 0, l, flag;
	cin >> n;
	cin >> c;
	for (i = 0; i <= strlen(c) - n; i++) //????
		for (j = 0; j < n; j++)
			*(*(p + i) + j) = *(r + i + j);
	for (i = 1; i < strlen(c) - n + 1; i++) //??????
	{
		for (j = 0; j < i; j++) //???????
		{
			flag = 1;
			for (k = 0; k < n; k++) //??????
			{
				if (*(r + i + k) != *(r + j + k))
					flag = 0;
			}
			if (flag) //???
			{
				(*(q + j))++; //??+1
				break;
			}
		}
	}
	flag = 1;
	for (i = 500; i > 1; i--) //??????????
	{
		for (j = 0; j < strlen(c); j++) //????????
		{
			if (*(q + j) + 1 == i) //????????
			{
				if(flag) //??????
				{
					cout << *(q + j) + 1 << endl;
					flag = 0;
				}
				for (l = 0; l < n; l++) //????
					cout << *(*(p + j) + l);
				cout << endl;
			}
		}
		if(!flag) //??????
			break;
	}
	if(flag) //???????NO
		cout << "NO" <<endl;

	return 0;
}
main()
{
	int n,d[500]={0};
	char a[600],b[500][10]={0},c[10];
	scanf("%d\n",&n);gets(a);
	int i,j,k,l=0,m,x,y;
	k=strlen(a);
	for(i=0;i<=k-n;i++)
	{
		for(j=i;j<=i+n-1;j++)
		{
			c[j-i]=a[j];
		}
		c[n]='\0';
		for(m=1;m<=l;m++)
		{
			if(strcmp(c,b[m-1])==0) {x=m-1;break;}
		}
		if(m>l) {strcpy(b[m-1],c);l++;}
		else d[x]++;
	}
	int max=d[0];
	for(i=0;i<l;i++) if(d[i]>max) max=d[i];
	max++;
	if(max==1) printf("NO");
	else
	{
    	printf("%d\n",max);
	    for(i=0;i<l;i++)
		{
	    	if(d[i]==max-1) puts(b[i]);
		}
	}
	return 0;
}
int main()
{
	char s[501], a[501][5] = { "\0" };
	int n, i, j, k, l, b[500] = { 0 }, c[500], z = 0;
	scanf("%d", &n);
	scanf("%s", s);
	l = strlen(s);
	for (i = 0; i < l - n + 1; i++)
	{
		for (j = 0; j < n; j++)
		{
			a[i][j] = s[i + j];
		}
	}
	for (i = 0; i < l - n + 1; i++)
	{
		for (j = i+1; j < l - n + 1; j++)
		{
			if (strcmp(a[i], a[j]) == 0)
			{
				b[i] = b[i] + 1;
			}
			else;
		}
	}
	for (k = 500; k > 0 && z == 0; k--)
	{
		for (i = 0; i < l - n + 1; i++)
		{
			if (b[i] == k)
			{
				c[z] = i;
				z = z + 1;
			}
			else;
		}
	}
	if (z == 0)
		printf("NO");
	else
	{
		printf("%d\n", k + 2);
		for (i = 0; i < z; i++)
			printf("%s\n", a[c[i]]);
	}
	return 0;
}
main()
{
char c[2000],x[2000][100];
int n,m,j,len,i,max;
int p[2000]={0},co[2000]={0};
scanf("%d\n",&m);
gets(c);	
len=strlen(c);
for (i=0;i<=len-m;i++)
 for (j=0;j<=m-1;j++)
    x[i][j]=c[i+j];
for (i=0;i<=len-m-1;i++)
 { p[i]=0;
 for (j=i+1;j<=len-m;j++)
  if (strcmp(x[i],x[j])==0&&p[j]==0) {co[i]++;p[j]=1;}
 }
 max=0;
for (i=0;i<=len-m;i++)
if (max<co[i]) max=co[i];
if (max+1<=1) printf("NO"); else {printf("%d\n",max+1);
for (i=0;i<=len-m;i++)
if (co[i]==max) printf("%s\n",x[i]);}
}
int main()
{
 int n,i,j,k,l;
 char a[501]={0},b[501][7]={0};
 int c[501]={0},min=0;
 cin>>n;
 cin>>a;
 l=strlen(a);
 for(i=0;i<=l-n;i++)
 for(j=0;j<n;j++)
   b[i][j]=a[i+j];
 for(i=0;i<=l-n;i++)
  {c[i]=1;
   for(j=1;j<=l-n-i;j++)
   {if(strcmp(b[i],b[i+j])==0)
      {c[i]++;}}}
min=c[0];
 for(i=0;i<=l-n;i++)
  if(c[i]>min)
   min=c[i];
if(min==1)
 cout<<"NO"<<endl;
else {
cout<<min<<endl;
 for(i=0;i<=l-n;i++)
  if(c[i]==min)
   cout<<b[i]<<endl;}
 return 0;
}
int main()
{
	char c[500][5];
	char d[501];
	int n,m,i,j;
	scanf("%d\n",&n);
	scanf("%s",d);
	memset(c,0,sizeof(c));
	int l;
	l=strlen(d);
	m=l-n+1;
	int q;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
			c[i][j]=d[i+j];
	}
	int b[500];
	for(i=0;i<m;i++)
		b[i]=1;
	for(i=0;i<m-1;i++)
	{
		for(j=i+1;j<m;j++)
			if(strcmp(c[i],c[j])==0)
			{
				b[i]++;
				
				b[j]=0;
			}
	}
	q=b[0];
	for(i=0;i<m;i++)
	{	
		if(b[i]>q)
			q=b[i];
	}
	if(q>1)
	{
		printf("%d\n",q);
		for(i=0;i<m;i++)
		if(b[i]==q&&c[i][0]>='a'&&c[i][0]<='z')
			printf("%s\n",c[i]);
	
	}
	else
		printf("NO");
	return 0;
}
int main()
{
    int n,l,i,j,b[500]={0},max=0,d[500]={0};
    char a[500]={0},c[500][5]={0};
    scanf("%d",&n);getchar();
    gets(a);
    l=strlen(a);
    for(i=0;i+n<=l;i++)
        for(j=0;j<n;j++)
        	c[i][j]=a[i+j];//????? 
    for(i=0;i+n<=l;i++)
    	for(j=0;j+n<=l;j++)
        	if(strcmp(c[i],c[j])==0)
			{b[i]++;if(i<j)d[j]=1;}
	for(i=0;i+n<=l;i++)if(b[i]>max)max=b[i];
	if(max<=1)printf("NO\n",max);
	else {
		printf("%d\n",max);
		for(i=0;i+n<=l;i++)
		if(b[i]==max&&d[i]==0)puts(c[i]);
	}
}
int main(){
   char z[1000],x[20];
   int i,j,k,l;
   int n,h[1000],p;
   scanf("%d",&n);
   scanf("%s",z);
   int len=strlen(z);
   for(i=0;i<=len-n;i++)
   {
	   h[i]=0;
	   for(j=i;j<i+n;j++)
	   {
		   x[j-i]=z[j];
	   }
	   x[n]=0;
	   for(j=i;j<len;j++)
	   {
		   p=0;
		   for(k=j;k<j+n;k++)
		   {
			   if(x[k-j]==z[k])
				   p++;
		   }
		   if(p==n)
			   h[i]++;
	   }
   }
   int count,dount,m=0;
   for(i=0;i<len-n+1;i++)
   {
       count=0;
	   dount=0;
	   for(j=0;j<len-n+1;j++)
	   {
		   if(h[i]>=h[j])
			   count++;
		   if(h[i]>h[j])
			   dount++;
	   }
	   if(count==len-n+1&&dount!=0)
	   {
		   printf("%d\n",h[i]);
		   m++;
	       break;
	   }
   }   
   for(i=0;i<len-n+1;i++)
   {
	   count=0;
	   dount=0;
	   for(j=0;j<len-n+1;j++)
	   {
		   if(h[i]>=h[j])
			   count++;
		   if(h[i]>h[j])
			   dount++;
	   }
	   if(dount!=0&&count==len-n+1)
	   {
		   for(j=0;j<n;j++)
		   {
			   x[j]=z[j+i];
		   }
		   x[n]=0;
		   printf("%s\n",x);
	   }
   }
   if(m==0)
	   printf("NO");
   return 0;
}