semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char a[501];
	int n, i, j, e, t = 0, s, g, m = 0;
	char b[500][6];
	char c[6];
	int d[500];
	cin >> n;
	cin >> a;
	e = strlen(a);
	for(i = 0; i <= e - n; i ++)
	{
		s = 0;
		g = 0;
		for(j = i; j <= i + n - 1; j ++)
		{
			c[s] = a[j];
			s ++;
		}
		c[n] = 0;
		for(j = 0; j <= t - 1; j ++)
		{
			if(strcmp(b[j], c) == 0)
			{
				d[j] = d[j] + 1;
				g = 1;
				break;
			}
		}
		if(g == 0)
		{
			strcpy(b[t], c);
			d[t] = 1;
			t ++;
		}
	}
	for(i = 0; i <= t - 1; i ++)
	{
		if(d[i] > m)
			m = d[i];
	}
	if(m > 1)
	{
		cout << m <<endl;
		for(i = 0; i <= t - 1; i ++)
		{
			if(m == d[i])
				cout << b[i] << endl;
		}
	}
	else
		cout << "NO";
	return 0;
}
struct group
{
	char B[5];
	int n;
}G[500],temp;
int main()
{
	char A[504];
	int number,i,j,k,flag,n,t,m=0;
	j=0;
	for(i=0;i<504;i++)
	{
		G[i].n=0;
		for(j=0;j<5;j++)
		{
			G[i].B[j]='\0';
		}
	}
	scanf("%d",&n);
	scanf("%s",A);
	number=strlen(A);
	j=0;
	for(i=0;i<number-n+1;i++)
	{
		flag=0;
		if(i==0)
		{
			for(k=0;k<n;k++)
			{
				G[j].B[k]=A[k];
			}
			G[j].n++;
			j++;
		}
		else
		{
			for(k=0;k<n;k++)
			{
				G[j].B[k]=A[i+k];
				G[j].n=1;
			}
			for(t=0;t<j;t++)
			{
				if(strcmp(G[t].B,G[j].B)==0)
				{
					G[t].n++;
					flag=1;
					break;
				}
			}
			if(flag==1)
			{
				for(k=0;k<n;k++)
				{
					G[j].B[k]='\0';
					G[j].n=0;
				}
			}
			else
			{
				j++;
			}
		}
	}
	for(i=1;i<j;i++)
	{
		for(k=0;k<j-i;k++)
		{
			if(G[k].n<G[k+1].n)
			{
				temp=G[k+1];
				G[k+1]=G[k];
				G[k]=temp;
			}
		}
	}
	m=1;

	i=1;
	while(G[i].n==G[0].n)
	{
		i++;
		m++;
	}
if(G[0].n==1)
{
printf("NO");
}
else
{
	printf("%d\n",G[0].n);
	for(i=0;i<m;i++)
	{
		printf("%s\n",G[i].B);
	}
}
	return 0;
}
int main()
{
	char c[505], d[505][6], e[505][6];
	memset(c, 0, sizeof(c));
	memset(d, 0, sizeof(d));
	int n, tmp = 0, max = 0, temp = 0;
	cin >> n;
	cin.get();
	cin.getline(c, 505);
	for (int i = 0; i <= strlen(c) - n; i++)
	{
		for (int j = 0; j < n; j++)
		     d[i][j] = c[i + j];
	}
	for (int i = 0; i <= strlen(c) - n; i++)
	{
		tmp = 1;
		if (d[i][0] != 0)
		{
			for (int j = i + 1; j <= strlen(c) - n; j++)
		    {
			    if (strcmp(d[i], d[j]) == 0)
			    {
				    tmp++;
				    memset (d[j], 0, 6);
			    }
		    }
		}
		else continue;
		if (tmp > max)
		{
			max = tmp;
			temp = 0;
			memset(e, 0, sizeof(e));
			strcpy (e[temp], d[i]);
		}
		if (tmp == max)
		{
			strcpy (e[temp], d[i]);
			temp++;
		}
	}
	if (max == 1) cout << "NO" << endl;
	else
	{
		cout << max << endl;
	    for (int i = 0; i < temp; i++)
	    {
		    cout << e[i] << endl;
	    }
	}
	return 0;
}
void main()
{
	int n,l,b[500]={0},i,j,k,max;
	char a[500],c[500][6];
	scanf("%d",&n);
	scanf("%s",a);
	l=strlen(a);
	for(i=0;i<l-n+1;i++)
    {
        for(j=0;j<n;j++)
		   c[i][j]=a[i+j]; 
	    c[i][j]='\0';
    }
    for(i=0;i<l-n;i++)
    {
          if(b[i]!=-1)
          {
               for(j=i+1;j<l-n+1;j++)
               if(b[j]!=-1)
               if(strcmp(c[i],c[j])==0)
               {b[i]++;b[j]=-1;}
      }
    }
    max=b[0];
    for(i=1;i<l-n+1;i++)
    {
        if(b[i]>max) max=b[i];
    }
	if(max==0) printf("NO\n");
	else 
    {
        printf("%d\n",max+1);
    	for(i=0;i<l-n+1;i++)
    		if(b[i]==max) printf("%s\n",c[i]);
    }
}
void main(){
	char a[500],b[10];
	int n,max=0;
	scanf("%d",&n);
	gets(b);
	gets(a);
	int i,j,k,l,x;
	l=strlen(a);
	int c[500];
	c[0]=1;
	for(i=1;i<=l-n;i++)
	{
		for(j=0;j<i;j++)
		{
			for(k=0;k<n;k++)
			{
				if(a[i+k]!=a[j+k])
				{
					break;
				}
			}
			if(k==n) 
				{
					c[j]++;
					c[i]=0;
					break;
				}
		}
		if(j==i) c[i]=1;
	}
	for(i=0;i<=l-n;i++)
	{
		if(max<c[i]) 
		{
			max=c[i];
		}
	}
	if(max>1)
	{
	printf("%d\n",max);
	for(i=0;i<=l-n;i++)
	{
		if(c[i]==max)
		{
			for(j=i;j<i+n;j++)
			{
				printf("%c",a[j]);
			}
			printf("\n");
		}
	}
	}
	else printf("NO");
	scanf("\n");
}
int main()
{
    char c[500];
    int len, n, i, j, k, l=0, m, cd[500], ld, max=0;
    
    scanf("%d", &n);
    scanf("%s", c);
    len = strlen(c);
    
    for(i=0; i<500; i++)
        cd[i] = 1;
    for(i=0; i<len-n; i++)
    {
        for(j=i+1; j<len-n+1; j++)
        {
            ld = 0;     
            for(k=0; k<n; k++)
            {
                if(c[i+k] == c[j+k])
                    continue;
                else
                {
                    ld++;
                    break;
                }     
            }  
            if(ld==0)
                cd[i]++;       
        }     
    } 
    for(i=0; i<500; i++)
    {
        if(max < cd[i])
            max = cd[i];     
    }
    if(max == 1)
        printf("NO\n");
    else
    {
        printf("%d\n", max);
        for(i=0; i<500; i++)
        {
            if(cd[i] == max)
            {
                for(j=i; j<i+n; j++)
                    printf("%c", c[j]);
                printf("\n");         
            }            
        }
     }
        
       
    
    

    return 0;
}
char str[510];
char gram[1000][6];
int sum[1000];

int main()
{
	int n, length, i, j, max, flag = -1, pos;
	cin >> n;
	cin.ignore();
	cin.getline(str, 500);
	length = strlen(str);
	//cout << length << endl;
	for (i = 0; i < length-n+1; i++)
		for (j = 0; j < n; j++)
			gram[i][j] = str[i+j];
	for (i = 0; i < 100; i++)
		sum[i] = 1;
	for (i = 0; i < length-n+1; i++)
	{
		if (gram[i][0] == '0')
			continue;
		for (j = i+1; j < length-n+1; j++)
		{ 
			if ((strcmp(gram[j], gram[i])) == 0)
			{
				sum[i]++;
				gram[j][0] = '0';
				sum[j] = 0;
			}
		}
	}
	max = 1;
	for (i = 0; i < length-n+1; i++)
	{	
		if (sum[i] > max)
		{
			max = sum[i];
			flag++;
			pos = i;
		}
	}
	if (flag == -1)
		cout << "NO" << endl;
	else
	{
		cout << max << endl;
		for (i = 0; i < length-n+1; i++)
		{
			if (sum[i] == sum[pos])
				cout << gram[i] << endl;
		}
	}
	return 0;
}
void main()
{
	int n,l,i,j,k,max=0;
	int sum[1000]={0},c[1000]={0};
	char a[1000];
	char b[1000][10];
	for(i=0;i<1000;i++)
		for(j=0;j<10;j++)
			b[i][j]='\0';
	scanf("%d\n",&n);
	gets(a);
	l=strlen(a);
	for(i=0;i<l-n+2;i++)
		for(j=0;j<n;j++)
			b[i][j]=a[i+j];
	for(i=0;i<l-n+2;i++)
	{
		for(j=0;j<l-n+2;j++)
		{
			if(strcmp(b[i],b[j])==0)
			 sum[i]=sum[i]+1;
		}
	}
	for(i=0;i<l-n+2;i++)
	{
		if(sum[i]>max)
			max=sum[i];
	}
	if(max==1)
		{
			printf("NO");
		}
	else
	{
		printf("%d\n",max);
	for(i=0;i<l-n+2;i++)
    {
		if(max==1)
		{
			printf("NO");
			break;
		}
		if(sum[i]==max&&c[i]==0)
		{
			printf("%s\n",b[i]);
			for(k=i;k<l-n+2;k++)
			{
				if(strcmp(b[k],b[i])==0)
					c[k]=1;
			}
		}
	}
	}
}
struct string{
	char a[6];
	int num;
}sub[1000];
void main()
{
	char str1[10],str[1000];
	int n;
	int i,j,k,l;
	int jishu,zonshu1=0,zonshu2=0;
	int max;
	int len;
	scanf("%d",&n);
	gets(str1);
	gets(str);
	for(i=0;i<n;i++) sub[999].a[i]='0';
	len=strlen(str);
	for(i=0;i<=len-n;i++)
	{
		for(j=0;j<n;j++) {sub[i].a [j]=str[i+j];sub[i].num=0;}
		for(k=0;k<=len-n;k++)
		{   
			jishu=0;
			for(l=0;l<n;l++)
			{
				if(str[k+l]==sub[i].a[l]) jishu++;
			}
			if(jishu==n) sub[i].num++;
		}
	}
	max=sub[0].num;
    for(i=0;i<=len-n;i++) max=(max>sub[i].num)?max:sub[i].num;
	if(max==1) printf("NO");
	else
	{
	for(i=0;i<=len-n;i++) {if(sub[i].num==max) zonshu1++;} 
    for(i=0;i<=len-n;i++)
	{
		if(strcmp(sub[i].a,sub[999].a)!=0&&sub[i].num==max)
		{
			for(j=i+1;j<=len-n;j++)
			{
				if(strcmp(sub[j].a,sub[i].a)==0&&sub[j].num==max)
				 strcpy(sub[j].a,sub[999].a);
			}
		}
	}
	for(i=0;i<=len-n;i++)
		if(strcmp(sub[i].a,sub[999].a)!=0&&sub[i].num==max) zonshu2++;
	printf("%d\n",zonshu1/zonshu2);
	for(i=0;i<=len-n;i++)
		if(strcmp(sub[i].a,sub[999].a)!=0&&sub[i].num==max) printf("%s\n",sub[i].a);
	}
}
int main()
{
	int n,i,j,l,c[500],k;
	char a[1000],b[500][6];
	scanf("%d",&n);
	getchar();
	gets(a);
	l=strlen(a);
	for(i=0;i<l-n+1;i++)
	{
		for(j=i;j<i+n;j++)
		{
			b[i][j-i]=a[j];
		}
		b[i][n]='\0';
	}
	for(i=0;i<l-n+1;i++)
	{
		c[i]=1;
		for(j=i+1;j<l-n+1;j++)
		{
			if(strcmp(b[i],b[j])==0)
			{
				c[i]=c[i]+1;
			}
		}
	}
	k=0;
	for(i=0;i<l-n+1;i++)
	{
		if(c[i]>k)
		{
			k=c[i];
		}
	}
	if(k<=1)
	{
		printf("NO");
	}
	else{
	printf("%d\n",k);
    for(i=0;i<l-n+1;i++)
	{
		if(c[i]==k)
		{
			printf("%s\n",b[i]);
		}
	}}
	return 0;
}
int main()
{
	int n,k,l;
	cin>>n;

	char ch[501];//?????????
	int a[500]={0};//?????????
	memset(ch,'\0',sizeof(ch));
	cin>>ch;
	int len;
	len=strlen(ch);
	
		//cout<<len<<endl;
	char temp1[6]={'\0'};
	char temp2[6]={'\0'};
	int i,j=0;
	for(i=0;i<len-n+1;i++)
		if(a[i]==0){
			for(k=0;k<n;k++)temp1[k]=ch[i+k];
			for(j=i+1;j<len-n+1;j++)
				if(a[j]==0){
					for(l=0;l<n;l++)temp2[l]=ch[j+l];
					if(strcmp(temp1,temp2)==0){a[i]++;a[j]=-2;}
				}}


	int m=0;//??????
		for(i=0;i<len-n+1;i++){//cout<<a[i]<<endl;
			m=max(m,a[i]);}
		if(m==0)cout<<"NO"<<endl;else{cout<<m+1<<endl;

		for(i=0;i<len-n+1;i++)
		if(a[i]==m){
			for(k=0;k<n;k++)
				cout<<ch[i+k];
			cout<<endl;}
				}
		
	return 0;
}
//**************************
//*???2013?12?11?    *
//*??????            *
//*???n-gram????    *
//**************************

int main ()
{
	int n, i, j, cnt = 1, maxx = 0;
	char a[501], b[501][5] = {'\0'}, d[501][5] = {'\0'}, c[1][5], max[501][5] = {'\0'};
	cin >> n >> a;
	int len = strlen(a);
	
	for(i = 0; i <= len - n; i++)
	{
		for(j = i; j <= n + i - 1; j++)
		{
			*(*(d+i)+j-i) = *(a+j);
			*(*(b+i)+j-i) = *(a+j);
		}
	}

	for(i = 0; i < len - n; i++)
	{
		for(j = 0; j < len - n; j++)
		{
			if(strcmp(b[j], b[j+1]) > 0)
			{
				strcpy(c[0], b[j]);
				strcpy(b[j], b[j+1]);
				strcpy(b[j+1], c[0]);
			}
		}
	}

	for(i = 0; i <= len - n; i++)
	{
		if(strcmp(b[i], b[i+1]) == 0)
		{
			cnt++;
		}
		else if(cnt >= maxx)
		{
			maxx = cnt;
			cnt = 1;
		}
		else
			cnt = 1;
	}
	if(maxx != 1)
		cout << maxx << endl;
	else
	{
		cout << "NO" << endl;
		return 0;
	}

	cnt = 1;
	for(i = 0; i <= len - n; i++)
	{
		if(strcmp(b[i], b[i+1]) == 0)
			cnt++;
		else if(cnt == maxx)
		{
			cnt = 1;
			strcpy(max[i], b[i]);
		}
		else
			cnt = 1;
	}

	for(i = 0; i <= len - n; i++)
	{
		for(j = 0; j <= len - n; j++)
		{
			if(strcmp(d[i], max[j]) == 0)
			{
				max[j][0] = '\0';
				cout << *(d+i) << endl;
				continue;
			}
		}
	}
	return 0;
}
int main ()
{
	char a[500],b[250][5];
	char x;
	int c[250]={0};
	int n,i,j,k,l,m,y;
	scanf("%d%c",&n,&x);
	gets(a);
	k=strlen(a);
	for(i=0;i<=k-n;i++)
	{
		for(j=0;j<n;j++)
		b[i][j]=a[i+j];
	}
	for(i=0;i<=k-n;i++)
		for(j=i+1;j<=k-n;j++)
		{
			if(b[i][0]!='\0')
			{
				y=0;
				for(m=0;m<n;m++)
					if(b[i][m]!=b[j][m]) y++;
				if(y==0)
				{
				c[i]=c[i]+1;
				b[j][0]='\0';
				}
			}
		}
	l=c[0]+1;
	for(i=0;i<k-n;i++)
		if(c[i]>l-1) l=c[i]+1;
	if(l==1) printf("NO");
	else
	{
		printf("%d\n",l);
	for(i=0;i<=k-n;i++)
	{
		if(c[i]==l-1)
		{
			for(j=0;j<n;j++)
				printf("%c",b[i][j]);
			printf("\n");
		}
	}
	}
}
int main(){
    int i,j,k,a[500]={0},b[500]={0},n,l,max;
    char s[500]={'\0'};
    char c[500][5]={'\0'};
    scanf("%d\n",&n);
    gets(s);
    l=strlen(s);
    for(i=0;i<=l-n;i++){
                       for(j=0;j<n;j++){
                                        c[i][j]=s[i+j];}}
    for(i=0;i<=l-n;i++){
                       for(j=i;j<=l-n;j++){
                                          if(strcmp(c[i],c[j])==0) a[i]++;
                                          }
                                          }
    max=a[0];
    for(i=0;i<l-n;i++){
                       if(a[i]>=max) max=a[i];}
    if(max==1) printf("NO");
    else{printf("%d\n",max);
          for(i=0;i<l-n;i++){
                       if(a[i]==max){ puts(c[i]);}}
                       }

}
int main()
{
	char a[501];
	char b[500][6];
	int n;
	scanf("%d",&n);
	scanf("%s",a);
	int i,j,m,x;
	x=strlen(a);
	for(i=0;i<=x-n;i++)
	{
		for(j=0;j<n;j++)
		{
			b[i][j]=a[i+j];
		}
	}
	int y;
	int c[500]={0};
	for(i=0;i<=x-n;i++)
	{
		for(j=i+1;j<=x-n;j++)
		{
			for(m=0;m<n;m++)
			{
				if(b[i][m]!=b[j][m])
				{
                    y=0;
					break;
				}
				else
				{
					y=1;
				}
			}
			if(y==1)
			{
				c[i]++;
			}
		}
	}
	y=0;
	for(i=0;i<=x-n;i++)
	{
		if(y<c[i])
		{
			y=c[i];
		}
	}
	if(y==0)
	{
		printf("NO\n");
	}
	else
	{

		printf("%d\n",y+1);
		for(i=0;i<=x-n;i++)
		{
			if(c[i]==y)
			{
				for(j=0;j<n;j++)
				{
					printf("%c",b[i][j]);
				}
				putchar('\n');
			}
		}
	}
	return 0;
}
int bi(char a[],char b[])
{
	int i,m=0,z=0;
	char c[6]={0};
	while(a[z+strlen(b)-1]!=0)
	{
	for(i=0;i<strlen(b);i++) c[i]=a[z+i];
	if(strcmp(b,c)==0) m++;
	z++;
	for(i=0;i<6;i++) c[i]=0;
	}
	return m;
}
int main()
{
	char a[600]={0},b[6]={0},c[500][6]={0};
	int i,j,z=0,k,m,n,d[500]={0},max=0;
	scanf("%d",&n);
	scanf("%s",a);
	while(a[z+n-1]!=0)
	{
	for(i=0;i<n;i++) b[i]=a[i+z];
	d[z]=bi(a,b);
	z++;
	for(i=0;i<6;i++) b[i]=0;
	}
	for(i=0;d[i]!=0;i++) if(max<d[i]) max=d[i];
	if(max==1) printf("NO");
	else
	{
	printf("%d\n",max);
	z=0;
	for(i=0;d[i]!=0;i++)
	{
		if(d[i]==max)
		{
			for(j=i;j<i+n;j++) c[z][j-i]=a[j];
			m=0;
			for(k=0;k<z;k++) if(strcmp(c[z],c[k])==0) m++;
			if(m==0) printf("%s\n",c[z]);
			z++;
		}
	}
	}
}
int main()
{
    int n,len,i,j,k,num[600]={0},flag;
    char chuan[600]={'\0'},cha[600][7]={'\0'},comp[7]={'\0'};
    cin>>n>>chuan;
    len=strlen(chuan);       
    for(i=0;i<=(len-n);i++)
    {
        k=0;
        for(j=i;j<i+n;j++)
        {
            comp[k]=chuan[j];
            k++;
        }     
        j=0;flag=0;
        while(num[j]!=0)
        {
            if(strcmp(comp,cha[j])==0)
            {
                num[j]++;
                flag=1;
                break;
            }
            j++;
        }
        if(flag==0)
        {
            for(k=0;k<n;k++)
               cha[j][k]=comp[k];
            num[j]++;
        }
    }      
    i=0;  while(num[i]!=0){i++;}     len=i;
    for(i=0;;i++)
    {
        if(num[i]==0)  break;
        for(j=1;j<len-i;j++)
        {      
            if(num[j]==0)   break;
            if(num[j-1]<num[j])
            {                
                k=num[j-1];   num[j-1]=num[j];   num[j]=k;
                strcpy(comp,cha[j-1]);    strcpy(cha[j-1],cha[j]);   strcpy(cha[j],comp);
            }
        }
    }                     
    if(num[0]==1)     cout<<"NO"<<endl;
    else{
    i=0;  cout<<num[0]<<endl;
    while(num[i]==num[0]) 
    {
        cout<<cha[i]<<endl;
        i++;
    } 
        }
   
    return 0;
}
int main ()
{ char num[400];
  char num1[400][400];
  int  sum[400];
  int i,n,j,t,m,s,max;
  scanf("%d\n",&n);
  gets(num);
  m=strlen(num);
  for(i=0;i<400;i++)
	  sum[i]=1;
  for(i=0;i<=m-n;i++)
	  for(j=i;j<i+n;j++)
		  num1[i][j-i]=num[j];
  for(i=0;i<=m-n;i++)
  {  t=0;
     if(sum[i]!=0)
	 { for(j=0;j<=m-n;j++)
	 {  for(s=j;s<j+n;s++)
	      if(num[s]!=num1[i][s-j]) break;
		  if(s==j+n) {t++;sum[j]=0;}
	 }
	 sum[i]=t;
	 }
  }
  max=1;
  for(i=0;i<=m-n;i++)
	  if(sum[i]>max) max=sum[i];
  if(max!=1)
  {  printf("%d\n",max);
	  for(i=0;i<m-n;i++)
     if(sum[i]==max)
	 { for(j=0;j<n;j++)
	   printf("%c",num1[i][j]);
	   printf("\n");
	 }
  }
  else printf("NO");
return 0;
}
int main()
{
char c[555],c1;
int tt2,tt,i,j,k,l,m,n,max,a[555];
cin>>n;
l=0;
tt=1;
c1=getchar();
while (tt=1)
{
c1=getchar();
if (c1=='\n')
{
tt=0;
break;
}
else
{
l++;
c[l]=c1;
}}
for (i=1;i<=l;i++)
{
a[i]=0;
}
max=1;
if (l<n)
{cout<<"NO";}
else	
{
for (i=1;i<=l-n+1;i++)
{
for (j=i;j<=l-n+1;j++)
{
tt=0;
for (k=0;k<=n-1;k++)
{
if (c[i+k]!=c[j+k])
{
tt=1;
}
}
if (tt==0)
{
a[i]++;
}
}
if (a[i]>max)
{
max=a[i];
}
}
tt2=0;
tt=0;
if (max==1)
{
cout<<"NO";
}
else
{
cout<<max;
cout<<'\n';
for (i=1;i<=l-n+1;i++)
{
if (a[i]==max)
{
tt2=1;
if (tt!=0)
{
cout<<'\n';
}
 for (j=0;j<=n-1;j++)
{	
 cout<<c[i+j];
 }
tt=1;
}
}
}
}

return 0;
}
void main()
{
	int n,i,k,num,max=0,len,count[1000]={0};
	char s[1000],zi[500][6],now[6];
	scanf("%d",&n);
	scanf("%s",s);
	len=strlen(s);
	

	for(i=0;i<n;i++)
		zi[0][i]=s[i];
	zi[0][i]='\0';
	count[0]=1;

	num=1;
	
	
	for(i=1;i<len-n+1;i++)
	{
		for(k=0;k<n;k++)
			now[k]=s[i+k];
		now[k]='\0';
		int p=0;
		while((p<num)&&(strcmp(now,zi[p])!=0))
		p++;
		if(p<num) count[p]++;
		else {
			count[num]=1;
			strcpy(zi[num],now);
			num++;
		}
	}
	for(i=0;i<num;i++)
	{
		if(count[i]>max)
			max=count[i];
	
	}
	if(max>1)
	{

	printf("%d\n",max);

	for(i=0;i<num;i++)
	{
		if(count[i]==max)
		{
			puts(zi[i]);
		
		}
	}
	}
	else printf("NO");
}
int main()
{
char c[10000],a[500][10]={0},b[10]={0};
int n,x=0,count[500]={0},max=0;
scanf("%d\n",&n);
gets(c);
for (int i=0;i+n<=strlen(c);i++)
    {
    for (int j=0;j<n;j++)
        {
        b[j]=c[i+j];
        }
    int pp=0;
    for (int j=0;j<x;j++)
        if (strcmp(b,a[j])==0)
        {
        pp=1;
        count[j]++;
        break;
        }
    if (pp==0) 
       {
       strcpy(a[x],b);
       x++;
       }
    }
for (int i=0;i<x;i++)
    {
    if (count[i]>max)
       {
       max=count[i];
       }
    }
if (max==0) {printf("NO");return 0;}
printf("%d\n",max+1);
for (int i=0;i<x;i++)
    {
    if (count[i]==max) 
       printf("%s\n",a[i]);
    }
}
int main()
{  int max=0,temp=1,i,j,k=0,len,n;
char total[600],a[500][6]={'\0'},tall[20][6]={'\0'};
   scanf("%d",&n);getchar();
   gets(total);
   len=strlen(total);
   for(i=0;i<len-n+1;i++)
	   for(j=0;j<n;j++)
		   a[i][j]=total[i+j]; 
   for(i=0;i<len-n+1;i++)
   {for(j=i+1;j<len-n+1;j++)
   if(strcmp(a[i],a[j])==0) temp++;if(temp>max) max=temp;temp=1;}
     for(i=0;i<len-n+1;i++)
   {for(j=i+1;j<len-n+1;j++)
   if(strcmp(a[i],a[j])==0) temp++;if(temp==max) strcpy(tall[k],a[i]),k++;temp=1;}
	if(max==1) printf("NO");
else{ printf("%d\n",max);
	 for(i=0;i<k;i++)
		 puts(tall[i]);}
	 return 0;
}
//********************************
//*???n-gram????   **
//*?????? 1300012855 **
//*???2013.12.11  **
//********************************


int main(void)
{
	int glen; // ????
	cin >> glen;
	char ar[505];
	cin >> ar;
	int slen; // ????
	slen = strlen(ar);
	struct substr // ??????????(????????)
	{
		int position; // ????
	}maxstr[100];
	int maxnum = 1, // ????????
		cmppo = 0, // ?????????
		crtpo = 0, // ?????????????
		maxtype = 0, // ?????????
		strnum = 0; // ???????
	while(cmppo <= slen - glen) // ??????????????????
	{
		strnum = 0; // ???????0
		crtpo = cmppo; // ?cmppo??????
		while(crtpo <= slen - glen)
		{
			for(int i = 0; i < glen; i++)
			{
				if(!(ar[crtpo+i]==ar[cmppo+i])) // ????????????
					break;
				if(i == glen-1) // ????????????strnum+
				{
					strnum++;
				}
			}
			crtpo++; // ???????
		}
		if(strnum > maxnum) // ??????????
		{
			maxtype = 1; // ????1
			maxstr[maxtype].position = cmppo; // ????
			maxnum = strnum; // ????
		}
		else if(strnum == maxnum) // ??????????????
		{
			maxtype++; // ????1
			maxstr[maxtype].position = cmppo; // ????
		}
		cmppo++; // ???????
	}
	if(maxnum == 1) // ??????????1????no
	{
		cout << "NO" << endl;
	}
	else
	{
		cout << maxnum << endl; // ?????????
		for(int j = 1; j <= maxtype; j++) // ????????
		{
			for(int i = 0; i < glen; i++)
				cout << ar[maxstr[j].position + i];
			cout << endl;
		}
	}
	return 0;
}
void main()
{
	int po[500]={0};
	char c[1000]={0},ca[5]={0};
	int max,n=0,nc,ns,j,a=0,p=0,i,same,k,nsame[500]={0};
	n=getchar()-'1'+1;
	getchar();
	gets(c);
	i=0;
	nc=0;
	while(c[nc]!=0) nc++;
	ns=0;
	for(i=0;i<nc-n+1;i++)
	{
		for(j=0;j<n;j++)
			ca[j]=c[j+i];
		for(k=0;k<nc-n+1;k++)
		{
		    same=1;
		    for(j=0;j<n;j++)
			{
			    if(ca[j]!=c[k+j]) same=0;
			}
			if(same==1)
			{
				nsame[i]++;
				if(k>i) po[k]=1;
			}
		}
	}
	max=0;
	for(i=0;i<nc-n+1;i++)
	{
		if(nsame[i]>1)
		{
			p=1;
			if(nsame[i]>max) max=nsame[i];
		}
	}
	if(p==1)
	{
	    printf("%d\n",max);
		for(i=0;i<nc-n+1;i++)
		{
			if(nsame[i]==max&&po[i]==0)
			{
				for(j=0;j<n;j++) printf("%c",c[i+j]);
				printf("\n");
			}
		}
	}
	else printf("NO");
}
char str[501][5];
char a[501];
int main(int argc, char* argv[])
{
    int n,m,k=0,i,j;
	char temp[5];
	int b[501];
	int max=0;
	scanf("%d\n",&n);
	gets(a);
	//puts(a);
    m=strlen(a);
	for(i=0;i<=m-n;i++)
	{
	   for(j=i;j<i+n;j++)   str[i][j-i]=a[j];
	   b[i]=1;
	}
   for(i=0;i<=m-n;i++)
   {
	  for(j=i+1;j<=m-n;j++)
	   if(strcmp(str[i],str[j])==0)  b[i]++;
	  if(b[i]>max)  max=b[i];
   }
    if(max==1)   printf("NO");
	else if(max>1)
	{
    printf("%d\n",max);
	for(i=0;i<=m-n;i++)
	  if(b[i]==max) 
	  {
	   printf("%s",str[i]);
	   printf("\n");
	  }
    }
	return 0;
}
int n,l,i,j,f[1000],tm,tn,tt;
char c[1000];
int st(int s,int t)
{
    int k;
    for(k=0;k<n;k++)
       if(c[s+k]!=c[t+k])
                   return 0;
    return 1;
}

int main()
{
    scanf("%d%s",&n,c);
    l=strlen(c);
    for(i=l-n;i>=0;i--)
    {
        for(tt=0,j=i;j<=l-n;j++)
            if(st(i,j))
                tt++;
        if(tt>tm)f[0]=1,f[1]=i,tm=tt;
        else if(tt==tm)f[++f[0]]=i;
    }
    if(tm>1)
    {    printf("%d\n",tm);
    for(i=f[0];i;i--,printf("\n"))
        for(j=0;j<n;j++)
            printf("%c",c[f[i]+j]);
    }
    else
        printf("NO");
    return 0;
}
int main()
{
int n,i,j,k,len,max;
char s[500],s1[500][5]={0},sum[500]={0};
scanf("%d",&n);
scanf("%s",s);
len=strlen(s);
for(i=0;i<len-n+1;i++)
{
for(j=0,k=i;j<n;j++,k++)
{
s1[i][j]=s[k];
} 
}
// for(i=0;i<len-n+1;i++)
// {
// puts(s1[i]); 
// }
for(i=0;i<len-n;i++)
{
for(j=i+1;j<len-n+1;j++)
{
if(strcmp(s1[i],s1[j])==0)
sum[i]++;
// printf("%d",sum[i]); 
}
}

max=sum[0];
for(i=0;i<len-n;i++)
{
if(sum[i]>max)
{
max=sum[i];

}
}
// printf("%d",max);
if(max!=0)
{
printf("%d\n",max+1);
for(i=0;i<len-n+1;i++)
{
if(sum[i]==max)
{
for(j=0;j<n;j++)
{
printf("%c",s1[i][j]);
}
printf("\n");
}

}
}
else printf("NO");
return 0; 
}
void main()
{
	int n,num[500]={0},l,t=0,i,j;
	char s[500],gram[600][5]={0};
	scanf("%d%s",&n,s);
	l=strlen(s);
	for(i=0;i<=l-n;i++)
	{
		for(j=0;j<n;j++)
			gram[i][j]=s[i+j];
	}
	
	for(i=0;i<l-n+1;i++)
	{
		if(strcmp(gram[i],"\0")==0)
			continue;
		else
		{
			t=0;
			for(j=0;j<l-n+1;j++)
				if(strcmp(gram[i],gram[j])==0)
				{
				t++;
				if(i!=j)
					gram[j][0]='\0';
				}
		    num[i]=t;
		}
	}
	t=num[0];
	for(i=0;i<l-n+1;i++)
	{
		if(num[i]>t)
			t=num[i];
	}
	if(t<=1)
		printf("NO\n");
	else
	{
		printf("%d\n",t);
		for(i=0;i<l-n+1;i++)
			if(num[i]==t)
				printf("%s\n",gram[i]);
	}
}
void main()
{
	int i,j,k,u,n;
	char s[1000];
	int num[1000]={0};
	scanf("%d",&n);
	scanf("%s",s);
	for(i=0;i<=strlen(s)-n;i++)
	{
		for(j=i;j<=strlen(s)-n;j++)
		{
			u=1;
			for(k=0;k<=n-1;k++)
				if(s[i+k]!=s[j+k])
					u=0;
			if(u==1)
				num[i]++;
		}
	}
	for(i=1,k=0;i<=strlen(s)-n;i++)
		if(num[i]>num[k])
			k=i;
	if(num[k]==1)
		printf("NO");
	else
	{
		printf("%d\n",num[k]);
		for(i=0;i<=strlen(s)-n;i++)
			if(num[i]==num[k])
			{
				for(j=i;j<=i+n-1;j++)
					printf("%c",s[j]);
				printf("\n");
			}
	}
}
void main()
{int i,j,k,max=0,t,len,n,b[501]={0};
char a[501]={'\0'};
scanf("%d",&n);
getchar();
gets(a);
len=strlen(a);
for(i=0;i<len;i++)
{	for(k=i;k<len-n+1;k++)
	{t=0;
		for(j=0;j<n;j++)
		{	if(a[i+j]!=a[k+j])
			t=1;
		}
	if(!t)
		b[i]++;
	}
}
for(i=0;i<len-n+1;i++)
	if(b[i]>max)
		max=b[i];

t=0;
for(i=0;i<len-n+1;i++)
	if(b[i]>1)
	{t=1;
	break;
	}
if(!t)
	{printf("NO");
	return;
	}
printf("%d\n",max);
for(i=0;i<len-n+1;i++)
	if(b[i]==max)
	{	for(j=0;j<n;j++)
		{printf("%c",a[i+j]);
		}
	printf("\n");
	}
}
char w[600][6];
char a[600][6];
char k[600];
char t[6];
int l,n;
int cmp(const void *a,const void *b){
	return strcmp((char *)a,(char *)b);
}
int main(){
	scanf("%d\n",&n);
	memset(k,0,sizeof(k));
	cin.getline(k,500,'\n');
	l=strlen(k);
	for(int i=0;i<l-n+1;i++)
		memcpy(&w[i],&k[i],sizeof(char)*n);
	qsort(w,l-n+1,6*sizeof(char),cmp);
	int d[500];
	memset(d,0,sizeof(d));
	d[0]=1;
	int m=1;
	for(int i=1;i<l-n+1;i++){
		d[i]=strcmp(w[i],w[i-1])?1:d[i-1]+1;
		m=max(m,d[i]);
	}
	if(m==1){
		cout<<"NO"<<endl;
		return 0;
	}
	int tt=0;
	for(int i=0;i<l-n+1;i++)if(m==d[i]){
		strcpy(a[tt],w[i]);
		tt++;
	}
	cout<<m<<endl;
	for(int i=0;i<l-n+1;i++){
		memcpy(&t,&k[i],sizeof(char)*n);
		for(int j=0;j<tt;j++)
			if(!strcmp(t,a[j])){cout<<t<<endl;a[j][0]=0;}
	}

	return 0;
}