semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	int n,i,j,k,A,M=0;
	char a[500];
	scanf("%d",&n);
	scanf("%s",a);
	A=strlen(a);
	char b[500][5];
	int c[500];
	if(n==2)
	{
		for(i=0;i<=A-n;i++)
		{
			b[i][0]=a[i];
			b[i][1]=a[i+1];
			b[i][2]=0;
		} 
	}
	if(n==3)
	{
		for(i=0;i<=A-n;i++)
		{
			b[i][0]=a[i];
			b[i][1]=a[i+1];
			b[i][2]=a[i+2];
			b[i][3]=0;
		} 
	}
	if(n==4)
	{
		for(i=0;i<=A-n;i++)
		{
			b[i][0]=a[i];
			b[i][1]=a[i+1];
			b[i][2]=a[i+2];
			b[i][3]=a[i+3];
			b[i][4]=0;
		} 
	}
	/*for(i=0;i<=A-n;i++)
	{printf("%s ",b[i]);}*/
	for(j=0;j<=A-n;j++)
	{
		c[j]=0;
		for(k=j;k<=A-n;k++)
		{
			if(strcmp(b[k],b[j])==0) 
			{c[j]=c[j]+1;}
		}
		if(M<c[j]) M=c[j];
	}
	if(M>1) 
	{
		printf("%d\n",M);
		for(j=0;j<=A-n;j++)
		{
			if(c[j]==M) printf("%s\n",b[j]);
		}
	}
	else printf("NO\n");
	
	
}
void main()
{
	int n,len;
	char a[500],b[500][50];
	int c[500]={0},d[500]={0};
	int i,j,k=0,t=0;
	scanf("%d\n",&n);
	scanf("%s",a);
	len=strlen(a);
	for(i=0;i<=len-n;i++)
	{
		
		for(j=i;j<=i+n-1;j++)
		{
			b[k][j-i]=a[j];
		
		}
		b[k][j-i]='\0';
		//puts(b[k]);
		k++;
	}
	for(i=0;i<k;i++)
	{
		for(j=i;j<k;j++)
		{
			if(strcmp(b[j],b[i])==0&&c[j]==0)
			{
				d[i]++;
				c[j]=1;
			}	
		}
	}
    for(i=0;i<k;i++)
	{
		if(d[i]>t)
			t=d[i];
	}
	
	if(t==1)
		printf("NO");
	else
    {
        printf("%d\n",t);
		
		for(i=0;i<k;i++)
	{
		if(d[i]==t)
			printf("%s\n",b[i]);
	
	}
	}
}
int main()
{
	int i, j, t, k, n, m=0;
	int flag = 1;
	char str[500];
	char *p;
	int a[500] = {0};
	cin >> n;
	cin >> str;
	k = strlen(str);
	for ( i = 0 ; i < k - n ; i++ )
	{
		for ( t = 0 ; t <= k - i - n  ; t++ )
		{
			for ( j = i ; j < n + i ; j++ )
			{
				if ( str[j] != str[j+t] )
				{
					flag = 0;
					break;
				}
			}
			if ( flag == 1 )
				a[i]++;
			flag = 1;
		}
	}
	for ( i = 0 ; i < k - n ; i++ )
	{
		if ( a[i] > m )
			m = a[i];
	}
	if ( m == 1 )
		cout << "NO" << endl;
	else
	{
		cout << m << endl;
		for ( i = 0 ; i < k - n ; i++ )
		{
			if ( a[i] == m )
			{
				p = &str[i-1];
				for (j = i ; j < i + n ; j++ )
					cout << *++p;
				cout << endl;
			}
		}
	}
	cin>>n;
	return 0;
}
int main()
{
	int n,b[500],t,i,j,k,max;
	char s[500],a[500][5];
	scanf("%d\n",&n);
	gets(s);
	for(i=0;i<strlen(s)-n+1;i++)
		for(j=0;j<n;j++)
			a[i][j]=s[i+j];
	for(i=0;i<strlen(s)-n+1;i++)
	{
		b[i]=1;
		for(j=i+1;j<strlen(s)-n+1;j++)
		{
			t=0;
			for(k=0;k<n;k++)
				if(a[i][k]!=a[j][k])
				{
					t=1;
					break;
				}
			if(t==0)
				b[i]++;
		}
	}
	max=0;
	for(i=0;i<strlen(s)-n+1;i++)
	{
		if(b[i]>max)
			max=b[i];
	}
	if(max==1)
		printf("NO");
	else
	{
	printf("%d\n",max);
	for(i=0;i<strlen(s)-n+1;i++)
	{
		if(b[i]==max)
			puts(a[i]);
	}
	}
	return 0;
}
int main()
{
    int n = 0;
    char s[501] = {0};
    char word[501][6] = {0};
    int count[501] = {0};
    int top = 0;
    scanf("%d\n", &n);
    gets(s);
    int i = 0, j = 0, len = strlen(s);
    int maxcount = 0;
    for ( i = 0; i < len - n+1; i++ )
    {
        for ( j = 0; j < n; j++ )
            word[top][j] = s[j+i];
        word[top][n] = '\0';
        for ( j = top -1; j >= 0; j-- )
        {
            if ( strcmp( word[j], word[top] ) == 0 )
            {
                count[j]++;
                if ( maxcount < count[j] )
                    maxcount = count[j];
                break;
            }
        }
        if ( j < 0 )
        {
            count[top] = 1;
            if ( maxcount < count[top] )
                maxcount = count[top];
            top++;
        }
    }
    if ( maxcount <= 1 )
    {
        printf("NO");
        return 0;
    }
    printf("%d", maxcount);
    for ( i = 0; i < len - n + 1; i++ )
    {
        if ( count[i] == maxcount )
            printf("\n%s", word[i] );
    }
    return 0;
}
char a[501][5],s[501],tem[5];
int b[501]={0},sum[501]={0};
int main()
{
    int n,i,j,l,t,flag=0,point=1;


    scanf("%d",&n);
    scanf("%s",s);
    l=strlen(s);    for(i=0;i<l-n+1;i++)
    {
        t=0;
        for(j=i;j<i+n;j++)
        {
            a[i][t]=s[j];
            t++;
        }
       
    }
    for(i=0;i<l-n;i++)
    {
        if(b[i]==0)
        {
                t=1;
        for(j=i+1;j<l-n+1;j++)
        {

                if(strcmp(a[i],a[j])==0)
                {
                    t++;
                    b[j]=1;
                }
        }
        sum[i]=t;
        if(sum[i]>1)
        flag=1;
        }
    }


    if(flag==1)
    {
    for(i=0;i<l-n;i++)
    {
        for(j=i+1;j<l+n-1;j++)
        {
            if(sum[j]>sum[i])
            {
                t=sum[i];
                sum[i]=sum[j];
                sum[j]=t;
                strcpy(tem,a[j]);
                strcpy(a[j],a[i]);
                strcpy(a[i],tem);
            }
        }

    }

    for(i=1;i<l-n+1;i++)
    {
        if(sum[i]==sum[i-1])
        point++;
        else
        break;
    }
    printf("%d\n",sum[0]);
    for(i=1;i<=point;i++)
    {
        printf("%s\n",a[i-1]);
    }
    }
    else
    {
        printf("NO\n");
    }
 return 0;

}
int main()
{      char str[1000];
       int n,m,i,j,a[1000]={0},b[1000]={0},k=0;
       scanf("%d",&n);
       char s[1000][10];
       scanf("%s",str);
       for(i=0;i<strlen(str)-n+1;i++)
       {for(j=0;j<n;j++)
       s[i][j]=str[i+j];
        s[i][n]='\0';}
       for(i=0;i<strlen(str)-n+1;i++)
       
       for(j=i;j<strlen(str)-n+1;j++)
       
       if (strcmp(s[i],s[j])==0)
       a[i]++;
        for(i=0;i<strlen(str)-n+1;i++)
        if (a[i]>k) k=a[i];
        if(k>1)
        {printf("%d\n",k);
        for(i=0;i<strlen(str)-n+1;i++)
        if (a[i]==k)  printf("%s\n",s[i]);
        }
        else printf("NO");
         
    }
main()
{
int n,i,j,m,l;
char a[5000]={0},b[3000][6]={0};
int c[3000]={0},d[3000]={0};
scanf("%d\n",&n);
gets(a);
l=strlen(a)-n+1;
for(i=0;i<l;i++)
{for(j=0;j<n;j++)
b[i][j]=a[i+j];
}
for(i=0;i<l;i++)
for(j=i+1;j<l;j++)
if(strcmp(b[j],b[i])==0)
{
c[i]++;d[j]=1;
}
m=c[0];
for(i=1;i<l;i++)
{
if(c[i]>m)
m=c[i];
}   
if(m==0)
printf("NO");
else
{
printf("%d\n",m+1);
for(i=0;i<l;i++)
if(c[i]==m)
puts(b[i]);
}
}
int main()
{
    char ch[500], *p, *q, *record[250];
    int n, l, num = 1, r, k, i, j, d = 0;
    
    cin >> n;
    
    cin >> ch;
    
    l = strlen(ch);
    
    for(p = ch; p < ch + l - 1; p++)
    {
        r = 1;
        
        for(q = p + 1; q < ch + l; q++)
        {
            k = 0;
            for(i = 0; i < n; i++)
            {
                if(*(q + i) == *(p + i)) k++;
            }
            if(k == n) r++;
        }
        
        if(r > num)
        {
            d = 0;
            num = r;
            record[d] = p;
            d++;
        }
        else if(r == num && num > 1)
        {
            record[d] = p;
            d++;
        }
    }
    
    if(num == 1) cout << "NO" << endl;
    else
    {
        cout << num << endl;
        for(i = 0; i < d; i++)
        {
            for(j = 0; j < n; j++)
            {
                cout << *(record[i] + j);
            }
            cout << endl;
        }
    }
    
    return 0;
}
int main()
{
	int n,i,k,j=0,max=0,sum[500]={0};
	char str[500],smallstr[500][5];
	cin >> n;
	cin >> str;
	char *p=str,*q;
	for( ;p<=str+strlen(str)-n;p++)
	{
		q=smallstr[j];
		for(i=0;i<n;i++)
			*q++=*p++;
		*q='\0';
		p=p-n;
		j++;
	}
	for(i=0;i<j-1;i++)
	{
		for(k=i+1;k<j;k++)
		{
			if(strcmp(smallstr[i],smallstr[k])==0)sum[i]=sum[i]+1;
		}
	}
	for(i=0;i<j-1;i++)
		max=(max>=sum[i]?max:sum[i]);
	if(max==0)cout<<"NO"<<endl;
	else 
		{
			cout<< max+1 <<endl;
			for(i=0;i<j-1;i++)
		    if(sum[i]==max)
					cout<<smallstr[i]<<endl;
	    }
    return 0;
}
int main()
{
	int n,i,lenth,c[500]={0},max=0,j,t;
	char a[500],b[6],d[6];
	scanf("%d",&n);
	getchar();
	gets(a);
	lenth=strlen(a);   
	b[n]='\0';
	d[n]='\0';
	for(i=0;i<lenth-n;i++)
	{
		for(t=i;t<n+i;t++)
			b[t-i]=a[t];
		c[i]++;
		for(j=i+1;j<lenth+1-n;j++)
		{
			for(t=j;t<n+j;t++)
			   d[t-j]=a[t];            
			if(strcmp(d,b)==0)
				c[i]++;
			
		}
		                                            // printf(" %s %d \n",b,c[i]);
	}
	for(i=0;i<lenth-n;i++)
	{
		if(c[i]>max) max=c[i];
		                                   //printf(" %d \n",c[i]);
	}
  if(max>1)
  {                                        // printf("  %d  \n",max);
	printf("%d\n",max);
	  for(i=0;i<lenth-n;i++)
	{
		if(c[i]==max) 
		{
			for(j=i;j<n+i;j++)
				printf("%c",a[j]);
			printf("\n");
		}
	}
  }
  else
	  printf("NO");
}
int main()
{
	char string1[500];
	char array[500][5];
	int n,i,j,t=0;
	cin>>n;
	cin>>string1;
	
	int num[500]={0};

	for(i=0;i<=strlen(string1)-n;i++)
		{
		for(j=0;j<n;j++)
		{array[i][j]=string1[i+j];}
		array[i][j]='\0';
		//cout<<array[i]<<endl;
		}
	for(i=0;i<=strlen(string1)-n;i++)
		for(j=i+1;j<=strlen(string1)-n;j++)
		if(strcmp(array[i],array[j])==0)
		{num[i]++;}
	for(i=0;i<=strlen(string1)-n;i++)
		if(num[i]>t)
		{t=num[i];}
		
	if(t==0)
		cout<<"NO"<<endl;
	else
	{cout<<t+1<<endl;
	for(i=0;i<=strlen(string1)-n;i++)
		if(num[i]==t)
		cout<<array[i]<<endl;}
	return 0;
}
struct word
{
	char b[6];
	int count;
}p[600],tmp;

int main()
{
	char a[600]={0},x[6];
	int n,len,sign=0,m=0;
	int i,j,k;
	scanf("%d",&n);
	scanf("%s",a);
	len=strlen(a);
	for(i=0;i<=len-n;i++)
	{
		for(j=0;j<6;j++)
		{
			x[j]='\0';
		}
		sign=0;
		for(j=0;j<n;j++)
		{	x[j]=a[i+j];}

		for(k=0;k<=m;k++)
		{
			if(strcmp(x,p[k].b)==0)
			{
				p[k].count++;
				sign=1;
				break;
			}
		}
			if(sign==0)
			{
				strcpy(p[m].b,x);
				p[m].count=1;
				m++;
				
			}
		
	}


	for(i=0;i<m;i++)
	{
		for(j=m-1;j>0;j--)
		{
			if(p[j].count>p[j-1].count)
			{
				tmp=p[j];
				p[j]=p[j-1];
				p[j-1]=tmp;
			}

		}
	}
	if(p[0].count<=1)
	{
		printf("NO\n");
	}
	else{

	printf("%d\n%s\n",p[0].count,p[0].b);
	for(i=1;i<m;i++)
	{
		if(p[i].count==p[i-1].count)
		{
			printf("%s\n",p[i].b);
		}
		else
			break;
	}
	}
	return 0;
}
int main()
{
    char c[510][7],wenben[510];
    int n,m,i,j,k,cishu[510]={0},max,zd,pinshu=0;
    scanf("%d",&m);
    getchar();
    scanf("%s",wenben);
    n=strlen(wenben);
    for(i=0;i<n-m+1;i++)
    {
                        for(j=i;j<i+m;j++)
                        {
                                        c[i][j-i]=wenben[j];
                        }
                        c[i][m]='\0';
    }
    for(i=0;i<n-m+1;i++)
    {
                        for(j=i;j<n-m+1;j++)
                        {
                                            if(strcmp(c[i],c[j])==0) cishu[i]+=1;
                        }
    }
    max=cishu[0];zd=0;
    for(i=0;i<n-m+1;i++)
    {
                        if(cishu[i]>max) 
                        {
                                         max=cishu[i];
                                         zd=i;
                        }
    }
    if(max<=1) printf("NO");
    else
    {
    printf("%d\n",max);
    for(i=0;i<n-m+1;i++)
    {
                        if(cishu[i]==max) printf("%s\n",c[i]);
    }
    }
    return 0;
}
int main()
{
	char a[500]={0},b[5]={0},c[5]={0};
	int i,j,ping[500]={0},n,lon,k,l;
	scanf("%d",&n);
	scanf("%s",a);
	lon=strlen(a);
	for(i=0;i<=lon-n;i++)
	{
		for(j=0;j<n;j++)
		{
			b[j]=a[i+j];
		}
		b[n]='\0';
		for(k=i;k<=lon-n;k++)
		{
			for(l=0;l<n;l++)
			{
				c[l]=a[k+l];
			}
			c[n]='\0';
			if(strcmp(b,c)==0)
				ping[i]++;
		}
	}
	l=0;
	for(i=0;i<=lon-n;i++)
	{
		k=0;
		for(j=0;j<n;j++)
		{
			b[j]=a[i+j];
		}
		b[n]='\0';
		for(j=0;j<=lon-n;j++)
		{
			if(ping[i]<ping[j])
			{
				k++;
			}
		}
		if(k==0)
		{
		if(ping[i]==1)
		{
			printf("NO");
			break;
		}
		else
		{
			l++;
			if(l==1)
			{
				printf("%d\n",ping[i]);
				printf("%s\n",b);
			}
			else
			{
				printf("%s\n",b);
			}
		}
	}
	}
	return 0;
}
int main()
{
	char a[501],b[500][5];

	int i,n,k=0,m,j,count[500]={0},mark[500]={0},max=1;
	scanf("%d\n",&m);
	gets(a);
	n=strlen(a);
	for(i=0;i<n-m+1;i++)
	{
		for(j=0;j<m;j++)
		{
			b[i][j]=a[i+j];
		}
		b[i][j]=0;
	}
	for(i=0;i<n-m+1;i++)
	{
		count[i]=1;
		for(j=i+1;j<n-m+1;j++)
		{
			if(strcmp(b[i],b[j])==0)
				count[i]++;
		}
	}
	for(i=0;i<n-m+1;i++)
	{
		if(count[i]==max&&max!=1)
		{
			mark[k]=i;
			k++;
		}
		else if(count[i]>max)
		{
			max=count[i];
			k=0;
			mark[k]=i;
			k++;
		}
	}
	if(max==1)
		printf("NO");
	else
	{
		printf("%d",max);
		for(i=0;i<k;i++)
		{
			printf("\n%s",b[mark[i]]);
		}
	}

	return 0;
}
int main()
{
    char s[500],a[500][500],b[500][500];
    int c[500]={0},i,j,k,t,max,count=1,x=1;
    scanf("%d",&t);
    scanf("%s",s);
    k=strlen(s);
    for(i=0;i<k-t+1;i++)
    {
        int m=0;
        for(j=i;j<i+t;j++)
        {
            a[i][m]=s[j];
            m++;
        }
    }
    for(i=0;i<k-t+1;i++)
    {
        for(j=0;j<k-t+1;j++)
        {
            if(strcmp(a[i],a[j])==0)
            c[i]++;
            else;
        }
    }
    max=c[0];
    for(i=0;i<k-t+1;i++)
    {
        if(c[i]>max)
        max=c[i];
    }
    if(max==1)
    printf("NO\n");
    else
    {
        printf("%d\n",max);
        for(i=0;i<k-t+1;i++)
        {
          if(c[i]==max)
          {
            strcpy(b[0],a[i]);
            break;
          }
        }
        for(i=0;i<k-t+1;i++)
        {
           int count2=0;
           if(c[i]==max)
           {
              for(j=0;j<count;j++)
             {
                 if(strcmp(b[j],a[i])==0)
                 break;
                 else
                 count2++;
              }
               if(count2==count)
               {
                   strcpy(b[x],a[i]);
                   x++;
                   count++;
                }
                else;
           }
            else;
         }
         for(i=0;i<count;i++)
         printf("%s\n",b[i]);
    }
    return 0;
}
int main()
{
	int n;
	char s[501];
	scanf("%d",&n);
	scanf("%s",s);
	char c[500][5];
	int i,count[500]={0},j,k,t,len;
	len=strlen(s);
	int m=0;
	for(i=0;i<=len-n;i++,m++)
	{
		k=i;
		for(j=0;j<n;j++,k++)
			c[m][j]=s[k];
		c[m][j]='\0';
		for(t=0;t<m;t++)
			if(strcmp(c[m],c[t])==0)
			{
				m--;
				count[t]++;
				break;
			}
	}
	int max=count[0];
	for(j=1;j<i;j++)
		if(count[j]>max) 
			max=count[j];
	if(max==0)
		printf("NO");
	else 
		{
			printf("%d\n",max+1);
			for(j=0;j<i;j++)
				if(count[j]==max)
					printf("%s\n",c[j]);
	}
}
//***************************
//**???3.cpp
//**??????
//**???2013.12.11
//**?????n-gram????
//***************************

void exp(int a);
void pick();
int n;
char str[501];
int sumstr[499] = {0};
int flagstr[499] = {0};
int len;
int maximum = INT_MIN;

int main()
{
	cin >> n;
	cin.get();
	cin.getline(str, 501);
	len = strlen(str);
	exp(0);
	if (maximum <= 1)
		cout << "NO" << endl;
	else
		pick();
	return 0;
}
void exp(int a)
{
	if (a == len - n + 1)
		return;

	int *q = NULL;
	int flag;

	q = sumstr + a;
	for (int i = a; i <= len - n; i++)
	{
		flag = 0;
		for (int j = 0; j <= n - 1; j++)
		{
			if (*(str + i + j) == *(str + a + j))
				flag++;
			else
				break;
		}
		if (flag == n)
			(*q)++;
	}
	maximum = *q > maximum? *q: maximum;
	exp(a + 1);
}
void pick()
{
	char *p = NULL;
	int *q = NULL;

	p = str;
	q = sumstr;
	cout << maximum << endl;
	for (int i = 0; i <= len - n; i++)
		if (*(q + i) == maximum)
		{
			for (int j = 0; j <= n - 1; j++)
				cout << *(p + i + j);
			cout << endl;
		}
}
//************************************************************************
//*???3.cpp                                                         
//*???n-gram????                                                        
//*??????                                                          
//*???2013?12?12?                                                   
//************************************************************************
int main()
{
	int n , i, j, k, num[510] = {0}, max = 1;       //????num???????????
	char str[510], put[510][8];						 //??put?????????
	cin >> n;
	cin.get();										 //??n???\0
	cin.getline(str, 510);
	int len = strlen(str);
	for(i = 0; i <= len - n; i ++ )
	{	
		k = 0;
		for(j = i ; j < i + n; j++)
		{
			put[i][k] = str[j];				
			k++;
		} 
		put[i][k] = '\0';
	}
	for(i = 0; i <= len - n; i++)
	{
		for(j = i; j <= len - n; j++)
		{			
			if(strcmp(put[i] , put[j]) == 0)
			{				
				num[i]++;
			}
		}
	}
	for(i = 0; i < len - n; i++)
	{
		
		if(num[i] > max)
			max = num[i];
	}
	if(max == 1)
		cout << "NO" << endl;
	else
	{
		cout << max << endl;
		for(i = 0; i < len - n; i++)
		{
			if(num[i] == max)
			{
				cout << put[i] << endl;
					
			}
		}
	}
	
	return 0;
}
int main()
{
	char a[500];
    int n;
    scanf("%d",&n);
	char b[500][10]={0};
	int i,j,c[500]={0},max,k;
	scanf("%s",a);
	for(i=0;i<strlen(a)-n+1;i++)
	{
		k=0;
		for(j=i;j<i+n;j++)
		{
			b[i][k]=a[j];
			k++;
		}
	}
	for(i=0;i<strlen(a)-n+1;i++)
	{
		for(j=i+1;j<strlen(a)-n+1;j++)
		{
			if(strcmp(b[i],b[j])==0)
			c[i]++;
		}
	}
	max=c[0];
	for(i=1;i<strlen(a)-n+1;i++)
	{
		if(c[i]>max)
		max=c[i];
	}
	if(max>0)
	    {printf("%d\n",max+1);}
	for(i=0;i<strlen(a)-n+1;i++)
	{
		if(c[i]==max&&max>0)
		printf("%s\n",b[i]);
	}
	if(max==0)
	printf("NO");
	return 0;
}
int main()
{
	int i,j,k,n,chsum=0,l=0,t=0,maxnum=1,a[600]={0};
	char ch[600][10],ch1[700],temp[10];
	cin>>n>>ch1;
	l=strlen(ch1);
	for(k=0;k<=l-n;k++)
	{
		for(j=0;j<n;j++)
			temp[j]=ch1[k+j];
		t=0;
		for(i=1;i<=chsum;i++)
		{
			t=1;
			for(j=0;j<n;j++)
			{
				if(ch[i][j]!=temp[j])
				{
					t=0;
					break;
				}
			}
			if(t==1)
			{
				a[i]++;
				if(a[i]>maxnum)maxnum=a[i];
				break;
			}
		}
		if(t==0)
		{
			chsum++;
			for(i=0;i<n;i++)
				ch[chsum][i]=temp[i];
			a[chsum]++;
		}
	}
	if(maxnum>1)
	{
	cout<<maxnum<<endl;
	for(i=1;i<=chsum;i++)
		if(a[i]==maxnum)
		{
			for(j=0;j<n;j++)
			    cout<<ch[i][j];
			cout<<endl;
		}
	}
	else cout<<"NO";
	return 0;
}
int n;
int f(char c[],int i,int j)
{
    int k;
    for(k=0;k<n;k++)
    if(c[i+k]!=c[j+k])
    return 0;
    return 1;
    }
int main()
{
    int i,j,k,m,sum=0;
    static char c[510];
    static int s[500][2];
    scanf("%d\n",&n);
    gets(c);
    for(i=0;c[i]!=0;i++);
    m=i;
    for(i=0;i<=m-n;i++)
    {
        for(j=0;j<sum;j++)
        if(f(c,i,s[j][0]))
        {
            s[j][1]++;
            break;
            }
        if(j==sum)
        {
            s[sum][0]=i;
            s[sum][1]=1;
            sum++;
            }
        }
    k=0;
    for(i=0;i<sum;i++)
        k=(k>s[i][1])?k:s[i][1];
    if(k==1)
    printf("NO");
    else
    {printf("%d\n",k);
    for(i=0;i<sum;i++)
    if(k==s[i][1])
    {for(j=0;j<n;j++)
    printf("%c",c[s[i][0]+j]);
    printf("\n");}}
    }
int main()
{
	char a[500]={'\0'};
	char b[500][5]={'\0'};
	int c[500]={0};
	char d[500][5]={'\0'};
	int n,i,j,max=0,k,z=-1;
	scanf("%d\n",&n);
	gets(a);
	k=strlen(a);
	for(i=0;i<=k-n;i++)
	{
		for(j=0;j<n;j++)
			b[i][j]=a[i+j];
		b[i][n]='\0';
	}
	for(i=0;i<=k-n;i++)
	{
		if(b[i][0]!=32)
		{
			z++;
			strcpy(d[z],b[i]);
		}
		for(j=k-n;j>=i;j--)
		{
			if(b[j][0]!=32)
			{
				if(strcmp(b[i],b[j])==0)
				{
					c[z]++;
					b[j][0]=32;
				}
			}
		}
		if(max<c[z])max=c[z];
	}
	if(max==1)printf("NO");
	else 
	{
	printf("%d",max);
	for(i=0;i<=z;i++)
	{
		if(c[i]==max)printf("\n%s",d[i]);
	}
	}
}
void main()
{
	char a[510],mark[6];
	struct cc{
		char w[6];
		int num;
	}b[500];
	int n,i,j,flag=0,len,q=0,max=0,sum=0;
	scanf("%d %s",&n,a);
	len=strlen(a);
	for(i=0;i<=len-n;i++){
		for(j=0;j<n;j++){
			mark[j]=a[j+i];
		}
		mark[j]=0;
		if(q==0){
			strcpy(b[0].w,mark);
			q++;
			b[0].num=1;
		}
		else{
			for(j=0;j<q;j++){
				if(strcmp(mark,b[j].w)==0){
					b[j].num++;
					break;
				}
			}
			if(j==q){
				strcpy(b[q].w,mark);
				b[q].num=1;
				q++;
			}
		}
	}
	for(i=0;i<q;i++){
		if(b[i].num>max){
			max=b[i].num;
		}
	}
	if(max==1)printf("NO\n");
	else{
	printf("%d\n",max);
	for(i=0;i<q;i++){
		if(b[i].num==max){
			printf("%s\n",b[i].w);
		}
	}
}}
int main()
{
	int n,i,l,j,num[504]={0},max=0;
	char a[504]={0},b[600][10]={0};
	scanf("%d\n",&n);
	gets(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++)
		for(j=0;j<i;j++)
			if(strcmp(b[j],b[i])==0) num[j]++;
	for(i=0;i<=l-n;i++)
		if(max<num[i]) max=num[i];
	if(max==0) printf("NO\n");
	else
	{
		printf("%d\n",max+1);
		for(i=0;i<=l-n;i++)
			if(num[i]==max) printf("%s\n",b[i]);
	}
	return 0;
}
int main()
{
	int n, j, k, changdu,i, max = 0;
    cin >> n;
	char str[501];
	int num[501] = {0};
	int *p = num;
	cin >> str;
	changdu = strlen(str);
	for(i = 0; i <= changdu - n; i++)
	{
		for(j = i; j <= changdu - n; j++)
		{
            for(k = 0; k <= n - 1; k++)
				if(str[i + k] != str[j + k]) break;
			if(k == n)
				*(p + i) = *(p + i) + 1;
			if(num[i] >= max)
				max = *(p + i);
		}
	}
	if(max <= 1)
		cout << "NO";
	else
	{
		cout << max << endl;
        for(i = 0; i <= changdu - 1 - n; i++)
		    if(*(p + i) == max)
			{
			    for(j = 0; j <= n - 1; j++)
				{
				    cout << str[i + j];
				}
			    cout << endl;
			}
	}
	return 0;
}
void main()
{
	char a[500]={'\0'},b[500][5]={'\0'};
	int i,j,m=0,n,k,x[300]={0},max=0;
	scanf("%d",&n);
	scanf("%s",&a);
	k=strlen(a);
	for(i=0;i<=k-n;i++)
	{
		for(j=i;j<i+n;j++)
			b[m][j-i]=a[j];
		m=m+1;
	}
	m=m-1;
	for(i=0;i<=m;i++)
	{
		for(j=i;j<=m;j++)
			if(strcmp(b[i],b[j])==0)
				x[i]=x[i]+1;
	}
	for(j=0;j<i;j++)
	{
		if(x[j]>=max)
			max=x[j];
	}
	if(max>1)
	{
	printf("%d\n",max);
	for(j=0;j<i;j++)
	{
		if(x[j]==max)
			printf("%s\n",b[j]);
	}
	}
	else
		printf("NO");
}
int main()
{
	int n,i,j,max=0,b[500]={0},s,m;
	char str[500],c[500][6];
	scanf("%d",&n);
	scanf("%s",str);
	m=strlen(str);
	for(i=0;i<m-n+1;i++)
	{
		for(j=0;j<n;j++)
		{
			c[i][j]=str[i+j];
		}
		c[i][n]='\0';
	}
	for(i=0;i<m-n+1;i++)
	{
		if(b[i]==0)
		{
			s=0;
			for(j=i;j<m-n+1;j++)
			{
				if(strcmp(c[i],c[j])==0)
				{
					s=s+1;
					b[j]=s;
					b[i]=s+1;
				}
				if(s>max) max=s;
			}
		}
	}
	if (max==1) printf("NO\n");
	else
	{
		printf("%d\n",max);
		for(i=0;i<m-n+1;i++)
		{
			if(b[i]==max+1)
			{
				printf("%s\n",c[i]);
			}
		}
	}
	return 0;
}
main()
{   int da,i,j,x,len,n,max[501];
    char s[501],a[501][6];
       scanf("%d\n",&n);
	   gets(s);
    len=strlen(s);
    for(i=0;i<=len-n;i++)
    max[i]=1;
    x=0;j=0;
    while(j<=len-n)
    {  i=0;
    while(i<n)
    {  a[j][i]=s[x];i++;x++;
    }
       j++;x=j;
    }
    for(i=1;i<=len-n;i++)
    if(strcmp(a[0],a[i])==0)
    max[0]++;
    da=max[0];
    for(i=1;i<=len-n;i++)
    for(j=i+1;j<=len-n;j++)
    if(strcmp(a[i],a[j])==0)
    max[i]++;
        for(i=0;i<=len-n;i++)
        if(max[i]>da)
        da=max[i];
    if(da<=1)
    printf("NO");
    else { printf("%d\n",da);  
	    for(j=0;j<=len-n;j++)
       if(max[j]==da)
       puts(a[j]);
    }
    
}
typedef struct
{
  char ch[10];
  int ord;
  int times;
  int sign;
}gram;
int cmp(const void* a,const void* b)
{
  gram* pa;
  gram* pb;
  pa=(gram*)a;
  pb=(gram*)b;
  if(pa->times!=pb->times)return ((pa->times<pb->times))?1:-1;
  //if(strcmp(pa->ch,pb->ch))return (strcmp(pa->ch,pb->ch)>0)?1:-1;
  return ((pa->ord)>(pb->ord))?1:-1;
}
int main()
{
  char c[1000];
  gram d[1000];
  char *p;
  int n,i,j,k;
  scanf("%d%s",&n,c);
  p=c;
  for(i=0;i<strlen(c)+1-n;i++)
  {
    d[i].ord=i;
    d[i].sign=1;
    for(j=0;j<n;j++)
    d[i].ch[j]=*(p+j);
    d[i].ch[n]='\0';
    p++;
  }
  for(i=0;i<strlen(c)+1-n;i++)
  {
    k=1;
    for(j=0;j<strlen(c)+1-n;j++)
    if(i!=j&&strcmp(d[i].ch,d[j].ch)==0)k++;
    d[i].times=k;
  }
  qsort(d,strlen(c)+1-n,sizeof(d[0]),cmp);
  int m=d[0].times;
  if(m==1){printf("NO");return 0;}
  printf("%d\n",m);
  for(i=0;i<strlen(c)+1-n;i++)
  if(d[i].times==m&&d[i].sign)
  {
    printf("%s\n",d[i].ch);
    for(j=0;j<strlen(c)+1-n;j++)
    if(i!=j&&strcmp(d[i].ch,d[j].ch)==0)d[j].sign=0;
  }
  return 0;
}
int main()
{
	char s[505];
	int n[505]={0};
	int a,i,j,k,l,max=0,nu;
	int ju=1;
	scanf("%d",&nu);
	getchar();
	scanf("%s",s);
	l=strlen(s);
	for(i=0;i<=l-nu;i++)
	{
		n[i]=1;
	}
	for(i=0;i<=l-nu;i++)
	{
		for(j=i+1;j<=l-nu;j++)
		{
			for(k=0;k<=nu-1;k++)
			{
				if(s[i+k]!=s[j+k])
				{
					ju=0*ju;
				}
			}
			if(ju==1)
			{
				n[i]++;
			}
			ju=1;
		}
	}
	for(i=0;i<=l-nu;i++)
	{
		if(n[i]>=max)
		{
			max=n[i];
		}
	}
	if(max==1)
	{
		printf("NO\n");
		return 0;
	}
	printf("%d\n",max);
	for(i=0;i<=l-nu;i++)
	{
		if(n[i]==max)
		{
			for(j=i;j<=i+nu-1;j++)
			{
				printf("%c",s[j]);
			}
			printf("\n");
		}
	}
	return 0;
}