semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char a[501];
	int b[500] = {0};
	cin >> a;
	int i, j = 0, k = 0;
	for (k = 2; k <= (int)strlen(a); k += 2)
	{
		for (i = 0; i < (int)strlen(a) + 1 - k; i++)
		{
			if ((a[i] == a[i+k-1])&&(b[i+1] == 0))
			{
				for (j = i; j<= i + k - 1; j++)
				{
					cout << a[j];
				}
				b[i] = 0;
				cout << endl;
			}
			else
			{
				b[i] = 1;
			}
		}
	}
	return 0;
}
int plalindrome(char *p){//?????????
	int n,i;
	for(n=0;*(p+n)!=0;n++);
	for(i=0;i<n/2;i++)
		if(*(p+i)!=*(p+n-1-i))break;
	if(i<n/2)return 0;//??0????
	return 1;//??1???
}
int main(){
	int i,j,k,n;
	char string[501],substring[501];
	cin.getline(string,501);
	for(n=0;string[n]!=0;n++);
	for(i=2;i<=n;i++)//???????????  i??????
		for(j=0;j<=n-i;j++){//j????????
			for(k=0;k<i;k++)substring[k]=string[j+k];
			substring[k]=0;
			if(plalindrome(substring))cout<<substring<<endl;
		}
	return 0;
}
void f(int n,char s[],int len);

int main()
{
	char s[520];
	cin.getline(s,518);
	int i,len;
	len=strlen(s);
	for (i=2;i<=len;i++)
	{
		f(i,s,len);
	}
	return 0;
}

void f(int n,char s[],int len)
{
	int j,p,k;
	for (j=0;j<=len-n;j++)
	{
	 for (p=j;p<=j+n-1;p++)
	 {
		 if (s[p]!=s[2*j+n-1-p])
			 break;
	 }
	 if (p==j+n)
	 {
		 for (k=j;k<=j+n-1;k++)
		 {
			 cout<<s[k];
		 }
		 cout<<endl;
	 }
	}
}
void f(char c[],char b[],int n,int i)
{
    if(i<=n-1)
        {
            b[i]=c[n-i-1];
            f(c,b,n,i+1);
        }
}
int main()
{
    char a[501],b[501]={0},c[501]={0};
    int n,i,j,k;
    gets(a);
    n=strlen(a);
    for(i=2;i<=n;i++)
        {
            for(j=0;j+i<=n;j++)
                {
                     for(k=0;k<i;k++)
                         {
                             c[k]=a[j+k];
                         }
                     f(c,b,i,0);
                     if(strcmp(c,b)==0)
                     printf("%s\n",c);
                     else continue;
                }
        }
    return 0;
}
//******************************************
//*???????.cpp                     **
//*??: ??     1100012808              **
//*???2011.11.13                       **
//******************************************
void zch(char a[])    //???????????
{
    int i = 0, j = 0, k = 0, flag = 0, l; 
    for (i = 2; i < strlen(a); i++) //i????????????
    {
	for (j = 0; j <= strlen(a) - i; j++) //j?????????
	{
            for (k = j; k < i / 2 + j; k++) //k????????????
	    {
		if (a[k] != a[i + j - 1 - (k - j)]) 
	            break;//???????????
	    }
	    if (k == i / 2 + j)//????????k??i/2+j
            {
		for (l = j; l < i + j; l++)//??????????
                    cout << a[l] ;
		cout << endl;
	     }
	}
    }
    return;
}
int main()  //???
{        //?????
    char ch[100000];
    cin.getline(ch, 100000);   //???????
    zch(ch);      //??zch??
    return 0;
} //?????
/*
 * file    homework 9_5
 * author  ??
 * date    2010-11-24
 * description
           ???????????????????
*/



int main()
{
	char str[501];
	int i, j, k, len;
	cin >> str;
	len = strlen(str);
	for (i = 2; i <= len; i ++)
		for (j = 0; j <= len - i; j ++)
		{
			for (k = 0; k <= (i - 1) / 2; k ++)
				if (str[j + k] != str[j + i - 1 - k])
					break;
			if (k > (i - 1) / 2)
			{
				for (k = 0; k < i; k ++)
					cout << str[j + k];
				cout << endl;
			}
		}

	return 0;
}
int main ()
{
    char s[501],t[501];
    int i,j,l,c,d,temp=0,m,n=0;
    scanf("%s",s);
    l=strlen(s);
    for (i=1;i<=l;i++)
    {
        for (j=0;j<l-i;j++)
        {
            d=j+i;
            c=j;
            while (c<d)
            {
                  if(s[c]==s[d])
                  {
                                c++;d--;
                  } 
                  else 
                  {
                       temp=1;
                       break;
                  }  
                                 
            }
            if (temp==0)
            {
                  for (m=j;m<=j+i;m++)
                   {
                        t[n]=s[m];
                        t[n+1]='\0';
                        n++;
                   }
                    printf("%s\n",t); 
                    n=0;                              
             }           temp=0; 
        }
    }
        return 0;     
}
char a[310];
void hui(int i,int l){
	int j;
	for(j=0;j<l;j++){
		if(a[i+j]!=a[l+i-1-j])
		return ;
	}
	for(j=0;j<l;j++)
		cout<<a[i+j];
	cout<<endl;
	return;
}
int main()
{
	int n,x,k;
	cin>>a;
	n=strlen(a);
	for(x=2;x<n;x++)
	{
		for(k=0;k<n;k++){
		hui(k,x);
		}
	}
		return 0;
}
void find(char sen[],char t[],int j,int i);
void trans(char t[],char tt[]);
int main()
{
   char sen[501],t[500],tt[500];
   int i=2,j,len,p,s,len1;
   cin>>sen;
   len=strlen(sen);
   
   while(i<=len)//i??????,j?????? 
   {
	   j=0;
	   while(j<=len-i)
	   {
		   p=1;
	      find(sen,t,j,i);
          
		  
		  trans(t,tt);
		  
		  for(s=1;s<=i;s++)
		  {
		     if(t[s]!=tt[s])
			 {
				 p=0;break;
			 }
		  }

		  if(p==1)
		  {
			  
			  
			  for(s=1;s<=i;s++)
			  {
				  if(s!=i)
				  {
					  cout<<t[s];
				  }
				  else
				  {
					  cout<<t[s]<<endl;
				  }
			  }
		  }
	   
	    j++;
	   }
   
	   i++;

   }
   return 0;

   
   






}
void find(char sen[],char t[],int j,int i)//??????
{
   int k,n;
   for(k=j,n=1;k<=j+i-1;k++,n++)
   {
	   t[n]=sen[k];
   }
   t[n]='\0';
}
void trans(char t[],char tt[])//??????????????
{
     int k,n,len;
	 len=strlen(t);
	 for(k=1,n=len-1;k<=len-1;k++,n--)
	 {
         tt[n]=t[k];
	 }
	 tt[len]='\0';
}
int main()
{
  char str1[500];
  int i,j,n,x=0,t;
  gets(str1);
  for (n=2;n<=strlen(str1);n++)
   {
     for (i=0;i<strlen(str1);i++)
      { 
       if((i+n)>strlen(str1)) break;                          
       for (j=i;j<=i+n-1;j++)
         {
           if(str1[j]==str1[i+i+n-1-j]) x=x+1;
          }
       if(x==n) 
         {
          for(t=i;t<i+n;t++) printf("%c",str1[t]);
          printf("\n");
          }
       x=0;
       }
     }
 
  return 0;
}
int main()
{
       char s[500];
	   int length,l,i,j,p,k;
	   cin>>s;
	   length=strlen(s);
	   for(l=2;l<=length;l++)
          for(i=0;i<length-l+1;i++)
		  {
			int flag=0;
			for(j=i,p=1;j<l/2+i;j++)
			{
                 if(s[j]!=s[j+l-p])
				{
					flag=1;
					break;
				}
				else
					p+=2;
			}
			if(flag==0)
			{
				for(k=i;k<i+l;k++)
					cout<<s[k];
				cout<<endl;
			} 
		  }
		  return 0;
}
/*????????
  ????00948344 ??
  ?????2010//12/31
*/


int main(){
	char str[500];
	cin>>str;
	int i,j,k,l,len;
	len=strlen(str);
	for(i=2;i<len;i++)
	{
		for(j=0;j<len+1-i;j++)
		{
			for(k=j,l=j+i-1;k<l;k++,l--)
			{
				if(str[k]!=str[l])
					break;
			}
			if(k>=l)
			{
				for(k=j;k<j+i;k++)
					cout<<str[k];
				cout<<endl;
			}
		}
	}
	return 0;
}
int main()
{
	char a[500];
	gets(a);
	int i,j,n,t,p;
	n=strlen(a);
	for(i=2;i<=n;i++){  
	
	    for(j=0;j<=n-i;j++){
                 for(t=j;t<j+i/2;t++){
		  if(a[t]!=a[2*j+i-1-t])
		     break;
                 }
	       if(t==j+i/2){
	         for(p=j;p<j+i;p++)
	             printf("%c",a[p]);
	          printf("\n");
	        }  
	    }
		
	}
}
int main(){
	char a[501];
    cin.getline(a,501);
    int i,j;
    int k;
    int p;
    int s;
    int count=0;
    int len;
    len=strlen(a);
    for(i=0;i<len-1;i++){
    	if(a[i]==a[i+1]){cout<<a[i]<<a[i+1]<<endl;}
    }
    for(i=3;i<=len;i++)
    	for(j=0;j<len;j++){
    		if(i%2==1){
    			k=(int)i/2;
    			if(j-k>=0&&j+k<len){
    				for(s=1;s<=k;s++){
    					if(a[j-s]==a[j+s])count++;
    					else break;
    				}
    				if(count==k){
    					for(p=j-k;p<j+k;p++)
    						cout<<a[p];
    					cout<<a[j+k]<<endl;
    				}count=0;
    			}
    		}
    		else if(i%2==0){
    			k=(int)i/2-1;
    			if(j-k>=0&&j+k+1<len){
    				if(a[j]==a[j+1]){
    					for(s=1;s<=k;s++){
    						if(a[j-s]==a[j+1+s])count++;
    						else break;
    					}
    					if(count==k){
    						for(p=j-k;p<j+k+1;p++)
    							cout<<a[p];
    						cout<<a[j+k+1]<<endl;
    					}
    				}count=0;
    			}
    		}
    	}
    return 0;
}
void f(char s[502],int m)
{   
	char s1[502];
	int i,k=0;
	m=strlen(s);
    for(i=0;i<m;i++)
	{
		s1[m-1-i]=s[i];
	}
	for(i=0;i<m;i++)
	{
		if(s1[i]==s[i])
			k++;
		else break;
	}
	if(k==m)
		printf("%s\n",s);
}
int main()
{
   char s[502],str[502];
   int n,i,j,k;
   gets(s);
   n=strlen(s);
   for(i=2;i<=n;i++)
   {
	   for(j=0;j<=n-i;j++)
	   {
		   for(k=0;k<i;k++)
		   {
			   str[k]=s[j+k];
		   }
		   str[i]='\0';
           f(str,i);
	   }
   }
   return 0;
}
int main()
{
	char a[500];
	int i,j,k,q,m;
	gets(a);

	for(i=0;;i++)
	{if(a[i]==0)
	 {q=i;break;}
    }

	char b[500],c[500];
	for(i=0;i<500;i++)
	{b[i]=0;
	 c[i]=0;
    }

	for(i=2;i<=q;i++)//??????
	{
		for(j=0;j<=q-i;j++)//?j??
		{
			for(m=0;m<i;m++)
			b[m]=a[j+i-m-1];

			for(m=0;m<i;m++)
			c[m]=a[j+m];

			if(strcmp(b,c)==0)
			{puts(c);
			
            }


        }
    }

}
int main()
{
	char str[503];
	int i, j, k, p, m, l;
	cin >> str;
	l=strlen(str);
	for (m=2;m<=l;m=m+2)
	{
		for (i=0;str[i+1]!='\0';i++)
		{
			j=i;
			p=i+1;
			while (str[j]==str[p]&&j>=0&&str[p]!='\0')
			{
				j--;
				p++;
				if ( p!=(i+1) && ((p-j-1)==m) )
				{
					for (k=j+1;k<p;k++)
						cout << str[k];
					cout << endl;
				}
			}		
		}
	}
	for (i=1;str[i]!='\0';i++)
	{
		j=i-1;
		p=i+1;
		while (str[j]==str[p]&&j>=0&&str[p]!='\0')
		{
			j--;
			p++;
		}
		if (p!=(i+1))
		{
			for (k=j+1;k<p;k++)
				cout << str[k];
			cout << endl;
		}
	}
	
	return 0;
}
int main()
{
	char str[500];
	int j,p=2,len,flag,m;
	gets(str);
	len=strlen(str);
	for(m=0;m<len;m++)
	{
		for(j=0;(j<len-m)&&(j>=0);j++)
		{
			flag=1;
			if(str[j]==str[j+m+1])
			{
				if(j+1==j+m+1)
					printf("%c%c\n",str[j],str[j+1]);
				else
				{	
					for(p=1;p<=m/2;p++)
					{
						if(str[j+p]==str[j+m+1-p])
							flag*=1;
						else
							flag*=0;
					}
					if(flag==1)
					{
						for(p=j;p<=j+m+1;p++)
							printf("%c",str[p]);
						printf("\n");
					}
				}
			}
		}
	}
	return 0;
}
int main()
{char str[550];
 cin.getline(str,501);
 int length=strlen(str);
 for(int i=2;i<=length;i++)
  for(int j=0;j<=length-i;j++)
   {int flag=1;
    for(int k=0;flag&&k<i/2;k++)
      if(str[j+k]!=str[j+i-1-k])
         flag=0;
    if(flag)
     {for(int k=0;k<i;k++)
        cout<<str[j+k];
      cout<<endl;
     }
   }
 return 0;
}
char b[10000][501];
int main()
{	
	char a[501];
	int i, j, k, l, n, m, o = 0;
	cin.getline(a, 501);
	n = strlen(a);
	for(i = 0; i < n - 1; i++)
		for(j = i + 1; j < n; j++)
		{	int flag = 1;
			if(a[i] == a[j])
			{	k = i;
				l = j;
				for(; k < l; k++, l--)
					if(a[k] != a[l])
					{	flag = 0;
						break;
					}
				if(flag == 1)
				{	for(m = i; m <= j; m++)
						b[o][m - i] = a[m];
					o++;
				}
			}
		}
	for(i = 2; i <= 500; i++)
		for(j = 0; j <= o; j++)
			if(strlen(b[j]) == i)
				cout << b[j] << endl;
	return 0;
}
int max(int a,int b);
int main()
{
	char a[500],b[250][500],p;
	int n,m,i,j,k,l[250],s,t=0;
	cin.getline(a,500);
	n=strlen(a);
	for(i=0;i<n-1;i++)
		for(j=0;i>=j&&a[i-j]==a[i+1+j];j++)
		{
			for(k=i-j;k<=i+j+1;k++)
			{
				b[t][k-i+j]=a[k];
			}
			l[t]=2*(j+1);
			t++;
		}
	for(i=0;i<n-2;i++)
		for(j=0;i>=j&&a[i-j]==a[i+2+j];j++)
		{
			for(k=i-j;k<=i+j+2;k++)
			{
				b[t][k-i+j]=a[k];
			}
			l[t]=2*(j+1)+1;
			t++;
		}
	m=t;
	for(i=0;i<m-1;i++)
		for(j=0;j<m-1;j++)
			if(l[j]>l[j+1])
			{
				for(k=0;k<max(l[j],l[j+1]);k++)
				{
					p=b[j][k];
					b[j][k]=b[j+1][k];
					b[j+1][k]=p;
				}
				s=l[j];
				l[j]=l[j+1];
				l[j+1]=s;
			}
	for(i=0;i<m;i++)
	{
		for(j=0;j<l[i];j++)
			cout<<b[i][j];
		cout<<endl;
	}
	return 0;
}
int max(int a,int b)
{
	if(a<b)
		return b;
	else
		return a;
}
void main()
{
	char s[501];
	int i,j,k,x;
	int count=0;
	int flag=0;
	gets(s);
	for (i=2;i<=strlen(s);i++)
	{
		for(j=0;(j+i)<=strlen(s);j++)
		{
			count=0;flag=0;
			for(k=0;k<(i/2);k++)
			{
				if (s[j+k]==s[j+i-k-1]) count++;
				
			}
			if(count==i/2)
			{
				for(k=0;k<i;k++)
				printf("%c",s[j+k]);
				printf("\n");
			}
		}
	}
}
char substr(char s[], int start, int end)
{
while ((end>start)&&(s[start]==s[end]))
{ start++; end--;}
if(end>start)
return 0; 
else return 1; 
}

osubstr(char s[], int start, int end)
{
while(start<=end) putchar(s[start++]);
putchar('\n');
}
main ()
{
char s[500];
int m,n,len,width;
gets(s);
len=strlen(s);
for(width=1; width<len; ++width)
for(m=0; m<=len-width;++m)
if(substr(s, m, m+width)) 
osubstr(s, m, m+width);
}
//****************************************
//*????                      **
//*??? 1100012927              **
//*2011.11.13                     **
//****************************************
int f(char[], int, int, int);
int k;
int main()
{
    int i = 1, b, j = 0;
    char a[500];
    cin.getline(a,500);
	for (j = 0; a[j] != '\0'; j++);
    for (i = 1; i < j + 1; i++)
    {
        for (b = 0; b < j - i; b++)
        {
            if (f(a, i, b, j))
            
            {
                for (k = 0; k <= i; k++)
                {
                    cout << a[b + k];
                }
                cout << endl;
            }
        }
    }
	return 0;
}
int f(char a[], int i, int b, int j)
{
    if (a[b] == a[b + i])
    {
        if (i != 1 && i != 2)
        {
            i = i - 2; b++;
            if(f(a, i, b, j))
                return 1;
            else 
                return 0;
        }
        
        return 1;
    }
    else
    {
        
        return 0;
    }
}
int main()
{
 char *p;
 p=(char *)malloc(sizeof(char)*500);
 gets(p);
 int i,j,k,flag;
 for(j=1;j<strlen(p);j++)
  for(i=0;i<strlen(p)-1;i++)
  {flag=1;
   if(i+j<=strlen(p)){
   for(k=0;k<j/2+1;k++)
   if(*(p+i+k)!=*(p+i+j-k))
   {flag=0;break;}
   if(flag)
   {for(k=i;k<=i+j;k++)
    printf("%c",*(p+k));
    printf("\n");} }
  }
}
int main()
{
	int k = 2, i = 0, j = 0;
	char str[500];
	cin >> str;
	int len = strlen(str);
	int p = 0;
	for (k = 2; k <= len; k++)
		for (i = 0; i <= len - k; i++)
		{
			p = 0;
			for (j = i; j < i + k / 2; j++)
			{
				if (str[j] != str[2 * i + k - 1 - j])
					break;
				else 
					p++;
				if (p == k / 2)
				{
					for (int t = i; t <= i + k - 1; t++)
						cout << str[t];
					cout << endl;
				}
			}
		}

			return 0;
}
/*
 * hehe.cpp
 *
 *  Created on: 2012-12-04
 *      Author:??
 *   ?????????????????
 *???????????????????????????
 *??? abba   cccdeedccc???????
 */
int main(){
	char a[600];
	char b[50][200][50];
	int lena=0;
	cin>>a;
	lena=strlen(a);                                 //??a???
	for(int i=2;i<=lena;i++)
       for(int p=0;p<=lena-i;p++)
       {  for(int j=p;j<p+i;j++)
    		   b[i][p][j]=a[j];                     //b[][][]????????????????????????
    	   int k=p;                                 //?????????
         for( ;k<=p+i/2;k++)
         {   if( b[i][p][k]!=b[i][p][2*p+i-1-k])    //?????????????????????????????????2*p+i-1?
        	   break;
         }
         int judgesame=0;
         for(int j=p;j<i+p&&p>=1;j++)
        	 if(b[i][p-1][j-1]==b[i][p][j])
        		 judgesame++;                       //judgesame?????????????
         if(k==(p+i/2+1)&&judgesame!=i)
         { for(int j=p;j<i+p;j++)
        	      cout<<b[i][p][j];                 //????
            cout<<endl;
         }
       }
	;
	return 0;
}
/*
 * 0.cpp
 *
 *  Created on: 2011-12-30
 *      Author: Alfalfa
 */
int main() {
	char string[500];
	cin>>string;
	int len=strlen(string);
	int i,j,k=1;
	while(k<len){
		for(i=0,j=k; j<len; i++,j++){
			int begin=i,end=j;
			while(begin<end){
				if(string[begin]!=string[end]) break;
				else{
					begin++;
					end--;
				}
			}
			if(begin>=end){
				int print=i;
				for(print; print<=j; print++)
					cout<<string[print];
				cout<<endl;
			}
		}
		k++;
	}
}
int main()
{
   int i,j,k,l,sign;
   char s[501],c[501];
   scanf("%s",s);
   l=strlen(s);
   for(j=2;j<=l;j++)
   {
      for(i=0;i<=l-j;i++,k=0)
	  {
	     for(k=0,sign=0;k<j;k++)
		 {
		    c[k]=s[i+k];
			if(s[i+k]==s[i+j-1-k])
			{
			   sign++;
			}
		 }
		 if(sign==j)
		 {
		   for(k=0;k<j;k++)
		   {
			   printf("%c",c[k]);
		   }
		   printf("\n");
		 }

	  }
   }
   return 0;
}
int main()
{
	char s[500];
	int len,len0,m,n,i,j,f=0;
	gets(s);
	len0=strlen(s);
	for(len=2;len<=len0;len++){
		for(i=0;i<len0-len+1;i++){
			j=i+len-1;m=i;n=j;
			while(s[m]==s[n] && m<=i+len/2-1){
				m++;n--;}
			if(m==i+len/2){
				for(m=i;m<=j;m++)
					printf("%c",s[m]);
				printf("\n");
			}
		}
	}
	return 0;
}
void f(char *p1,char *p2)
{
     char *p=p1,*q=p2;
     for(;p1<p2;p1++,p2--)
     if(*p1!=*p2) break;
     if(p1>=p2) {for(;p<=q;p++) printf("%c",*p);printf("\n");}
}
int main(int argc, char *argv[])
{
  char a[500];
  int i,j;
  char *p,*q;
  scanf("%s",a);
  for(i=1;i<=strlen(a)-1;i++)
  for(j=0;j<strlen(a)-i;j++)
  {p=a+j;q=a+i+j;f(p,q);}
  return 0;
}
char a[1000];
void judge(int left,int right)
{
	for (int i=left;i<=right;i++)
	{
		if (a[i]!=a[right+left-i])
			return ;
	}
	for (int i=left;i<=right;i++)
	{
		cout<<a[i];
	}
	cout<<endl;
	return;
}



int main()
{
	cin.getline(a,1000);
	int len=strlen(a);
	for (int j=1;j<=len-1;j++)
	{
		for (int i=0;i<len-1;i++)
		{
		
				if (i+j<=len-1)
				{judge(i,i+j);
				}
		}
	}
return 0;}
/*
 * homework3.cpp
 *
 *  Created on: 2012-12-4
 *      Author: Lixurong
 */


int main()
{
	char a[1002];
	cin >> a;
	for( int i=2; i<=strlen(a); i++ )
	{
		for( int j=0; j<=strlen(a)-i; j++ )
		{
			int p=0;
			for( int x=0; x<i; x++ )
			{
				if(a[j+x]!=a[j+i-x-1])
				{
					p=1;
					break;
				}
			}
			if(p==0)
			{
				for( int x=j; x<j+i; x++ )
				{
					cout << a[x];
				}
				cout << endl;
			}
		}
	}
}
void main()
{
	char *s;
	int i,n,j,k,m=0,p,**x,y=0,z=0,min,q,a;
	x=(int **)malloc(100*sizeof(int*));
	for(y=0;y<100;y++)*(x+y)=(int *)malloc(3*sizeof(int));
	y=0;
	
	s=(char *)malloc(500*sizeof(char));
	gets(s);
	n=strlen(s);
    for(i=0;i<n;i++)
	{m=1;
		for(j=i+1;j<n;j++)
			if(*(s+i)==*(s+j)){m=0;for(k=i+1;k<=j-1;k++){if(*(s+k)==*(s+j-k+i))m=0;else m=1;}
			if(m==0){*(*(x+y))=i;*(*(x+y)+1)=j;*(*(x+y)+2)=j-i;y++;}}
	}
for(a=0;a<y;a++)
{min=501;
	for(z=0;z<y;z++)
	{
if(*(*(x+z)+2)<min){min=*(*(x+z)+2);q=z;}
}
for(p=*(*(x+q)+0);p<=*(*(x+q)+1);p++)
printf("%c",*(s+p));printf("\n");*(*(x+q)+2)=501;
}


}
char substr(char s[],int start,int end)
{
	while((end>start) && (s[start]==s[end]))
	{
		start++;
		end--;
	}
	if(end>start)
		return 0;
	else
		return 1;
}
osubstr(char s[],int start,int end)
{
	while(start<=end)
	{
		putchar(s[start++]);
	}
	putchar('\n');
}
int main()
{
	char s[500];
	int m,len,width;
	gets(s);
	len=strlen(s);
	for(width=1;width<len;++width)
	{
		for(m=0;m<=len-width;++m)
		{
			if(substr(s,m,m+width))
				osubstr(s,m,m+width);
		}
	}
			
}
int main()
{
	char a[500];
	int len, i, j, k;
	cin >> a;
	len = strlen(a);
	for (i = 2; i <= len; i++)
		for (j = 0; j <= len - i; j++)
		{
			for (k = 0; k < i / 2; k++)
			{
				if (a[j + k] != a[j + i - 1 - k])
				{	
					k = -1;break;
				}
			}
			if (k != -1)
			{
				for (k = j; k < j + i; k++)
					cout << a[k];
				cout << endl;
			}

		}
	return 0;
}
int check(char c[])
{
	int len,i;
	char d[1000];
	len=strlen(c);
	for(i=0;i<len;i++)
		*(d+i)=*(c+len-i-1);
	*(d+len)='\0';
	if(strcmp(c,d)==0)
		return 1;
	else
		return 0;
}


int main()
{
	char a[1000];
	char b[1000];
	int i,j,k,len,m;
	scanf("%s",a);
	len=strlen(a);
		for(i=2;i<=len;i++)
		{
			for(j=0;j<=len-i;j++)
			{
				for(m=0;m<i;m++)
					*(b+m)=*(a+j+m);
				b[i]='\0';
				if(check(b))
					printf("%s\n",b);
			}
		}
		return 0;
}
//*************************************************
//* file: 1000012912_005.cpp                      *
//* author : ???                               *
//* date : 2010.11.26                             *
//* function : ????                           *
//*************************************************
void huiwen(int pos, int l , char str[]);
int main()
{
	int i, len, l;                                        //l?????
	char str[500];  
	cin.getline(str,500);
	len = strlen(str);
	for ( l = 2; l <= len; l ++ )
	{
		for ( i = 0; i < len; i ++ )                     //i?????
			 huiwen(i,l,str);
	}
	return 0;
}
void huiwen( int pos, int l, char str[])
{
	int right, left, j;                                                          //left?????right????
	for ( left = pos, right = pos + l - 1; right > left; right --, left ++ )
		if ( str[left] != str[right] )                                          //?????????
			break;
	if ( left >= right )                                     //????
	{
		for ( j = pos; j < pos + l; j ++ )
			cout << str[j];
		cout << endl;
	}
}
int main()
{
	int i,j,l,k,p,q;
	char c[500],temp[500]={0};
	gets(c);
	l=strlen(c);
	for(i=1;i<l;i++)  //i+1???
	{
		for(j=0;j<l-i;j++)  //j????
		{
			for(k=0;k<=i;k++)
			{
				temp[k]=c[j+k];
			}
			for(p=0;p<=(i+1)/2-1;p++)
			{
				if(temp[p]!=temp[i-p]) break;
				if(p==(i+1)/2-1) printf("%s\n",temp);
			}
			for(q=0;q<500;q++) temp[q]=0;
		}
	}
	return 0;
}
//******************************************
//*???????                              **
//*??????    1100062706            **
//*???2011.11.14                         **
//******************************************
void panDuan(int);//
int main()//
{//
	int w = 1;//
	panDuan(w);//
	char a[500];//
	char e[500][500];//
	cin.getline(a,500);//
	int i = 0, k, j, n, m, g = 0, l, t, h = 0, y = 0, b = 0, q = 0, r = 0, x, z;//
	int p[500] = {0};//
	do
	{
		if(a[i] != '\0')
			i++;//
		else
			break;
	}while(1);
	for (k = 2;k < i + 1;k++)
	{
		for(j = 0;j < i - k + 1;j++)
		{
			g = 0;
			for(m = j, n = j + k - 1; ;m++, n--)
			{
				if(m >= n||n >= i)
					break;
				if(a[m] == a[n])//
				{g++;}		
			}
			t = j, x = t;
			if(g == k/2)//
			{
                for(l=0;l<k;l++)
					cout<<a[t++];
				cout<<'\n';
						
				
								
			}
		}
	h=0;
	}	
	return 0;
}//
void panDuan(int a)//
{
	if(a != 1)
		cout << "false" << endl;//
}
/*
 * ????huiwenzichuan.cpp
 * ?????
 * ????: 2011-12-28
 * ???????
 */
int main(){
	char a[500];//????
	unsigned int i,j,k,l;//????
	cin>>a;//?????
	for(k=2;k<strlen(a)+1;k++)//????
	{
		for(i=0;i<strlen(a)-k+1;i++)//??
		{
			for(j=i;j<i+k;j++)//???????
			{
				if(a[j]!=a[2*i+k-1-j])break;//?????????????
				else if(j>=2*i+k-1-j){for(l=i;l<i+k;l++)cout<<a[l];cout<<endl;break;}//?????????
			}
		}
	}
	return 0;//????
}
void main()
{
	char str[1000];
	int a,b,c,d,e,f,i,j,k,l0,l;
	gets(str);
	l0=strlen(str);
	for(l=2;l<=l0;l++)
	{

		for(i=0;i<=l0-l;i++)
		{

			a=0;
			for(j=0;j<l/2;j++)
			{

				if(str[i+j]!=str[l-j+i-1]) {a=1;break;}
			}
				if(a==0) 
			{
				for(j=i;j<i+l;j++)
					printf("%c",str[j]);
				printf("\n");
			}
		}
	}


}
//********************************
//*???????               **
//*??????                 **
//*???2012.11.10             **
//*******************************/


int main ()
{
	char str[500];
	int i, j, k, length, flag = 0;
	cin >> str;
	length = strlen(str);
	for (i = 1; i <= length -1; i++)
	{
		for (j = 0; j < length - i; j++)
		{
			if (str[j] == str[j + i])
			{
				for (k = 0; k <= (i / 2); k++)
				{
					if (str[j + k] != str[i + j - k])
					{
						flag = 1;
						break;
					}
				}
				for (k = j; (k <= j + i) && (flag == 0); k++)
					cout << str[k];
				if (flag == 1)
					flag = 0; 
				else
					cout << endl;
			}
		}
	}
	return 0;
}
void s(char[], int, int);
int main()
{
	char a[1000];
	cin .getline(a, 1000);
	int len = strlen(a);
	s(a, 1, len);
	return 0;
}
void s (char a[1000], int n, int len)
{
	if (n > len / 2)
		return;
	else
	{
		for (int i = 0; i + 2 * n - 1 < len; i++)
		{
			int flag = 1;
			for (int j = n; j > 0; j--)
			{
				if (a[i + n - j] != a[i + j + n - 1])
				{
					flag = 0;
					break;
				}
			}
			if (flag)
			{
				for (int m = i; m <= i + 2 * n - 1; m++)
					cout << a[m];
				cout << endl;
			}
		}
		s (a, n + 1, len);
	}
}