semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
void revchk(char *a,int l)//????????????
{
	int i,j=0;
	for(i=0;i<=l-1;i++)
		if(a[i]!=a[l-1-i])//???????
			j=1;
	if(j==0)
	{
		for(i=0;i<=l-1;i++)//???????
			cout<<a[i];
		cout<<endl;
	}
}

int main()
{
	int m,n;
	char b[500];
	cin.getline(b,500);//??
	for(m=2;m<=(int)strlen(b);m++)//??2-strlen
		for(n=0;n<=(int)strlen(b)-m;n++)//??????m?
			revchk(&b[n],m);
	return 0;

}
int main()
{
	char array[501];
	cin.getline(array,501);
	int k,l,i,s=0;
	for(i=0;i<strlen(array)-1;i++)
	{
		if(array[i]==array[i+1])
		{
			cout<<array[i]<<array[i+1]<<endl;
		}
	}
	for(l=3;l<strlen(array);l++)
	{
		for(k=0;k<strlen(array)-l;k++)
		{
			for(i=0;i<=l/2;i++)
			{
				if(array[k+i]!=array[k+l-i])
				{
					s++;
					break;
				}
			}
			if(s==0)
			{
				for(i=0;i<=l;i++)
				{
					cout<<array[k+i];
				}
				cout<<""<<endl;
			}
			s=0;
		}
	}
	return 0;
}
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)
			{
                if(h==0)
				{
					for (l=0; l < k;l++)
					{cout << a[t++];e[y][l]=a[t];}
					y++;
					cout<<'\n';
					h=1;
				}
				else
				{
					for(b=0;b<y;b++)
					{
						for(z=0;z<k;z++)
						{
							if(a[x]==e[b][z])
							{
								p[b]++;
							
							}
							x++;
						}
						
					}
					r=0;
					for(q=0;q<y;q++)
					{
						if(p[q]==k)
						{
							r=1;
						}

					}
					for(q=0;q<10;q++)
						p[q]=0;
					
					if(r!=1)
					{
						for (l=0; l < k;l++)
							{cout << a[t++];e[y][l]=a[t];}
						y++;
						cout<<'\n';
						
					}
				}
			
				
				 
				

			}
		}
	h=0;
	}
	


	
	return 0;
}
void panDuan(int a)
{
	if(a!=1)
		cout<<"false"<<endl;
}
int main()
{
    char a[501],c='a';
    int i = 0,j,k,l,m = 0,n;
    while(c != '\n')
    {
        i++;
        c = cin.get();
        a[i] = c;
    }
    i--;
    for(j = 2;j <= i;j++)
    {
        for(k = 1;k <= i - j + 1;k++)
        {
            m = 0;
            for(l = 0;l <= j - 1;l++)
            {
                if(a[k + l] != a[k + j - l - 1])
                {
                    m = 1;
                    break;
                }
            }
            if(m == 0)
            {
                for(n = 1;n <= j;n++)
                cout << a[k + n - 1];
                cout << endl ;
            }
        }
    }
    return 0;
}
int main()
{
    char substr(char s[],int,int);
    char osubstr(char s[],int,int);
    int len,width,m;
    char s[1000];
    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);
            }
        }
    }
    return 0;
}

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

char osubstr(char s[],int start,int end)
{
    while (start<=end) {
        putchar(s[start++]);
    }
    putchar('\n');
}
void maxhui(char huichuan[500], char chuan[], int i)
{
	int k, l = 1;
	for(k = i ;  ; k ++)
	{
		if(chuan[k] == chuan[k - 2 * l + 1])
		{
			huichuan[l - 1] = chuan[k];
			l = l + 1;
		}
		else break;
	}
	huichuan[l - 1] = '\0';
}



int main()
{
	char chuan[500], huichuan[500][500];
	int i, j, k = 0, length, p;
	cin.getline(chuan, 500, '\n');
	for(i = 1 ; i < strlen(chuan) ; i ++)
	{
		if(chuan[i] ==  chuan[i - 1])
		{
			maxhui(huichuan[k], chuan, i);
			k++;
		}
	}
	int maxlen[500], maxlength = 0;
	for(i = 0 ; i < k ; i ++)
	{
		if(strlen(huichuan[i]) > maxlength)maxlength = strlen(huichuan[i]);
	}
	for(i = 0 ; i < maxlength ; i ++)
	{
		for(j = 0 ; j < k ; j ++)
		{
			if(strlen(huichuan[j]) > i)
			{
				for(p = i ; p >= 0 ; p --)
				{
					cout << huichuan[j][p];
				}
				for(p = 0 ; p <= i ; p ++)
				{
					cout << huichuan[j][p];
				}
				cout << endl;
			}
		}
	}
	return 0;
}
//****************************************
//*???????                        **
//*????? 1100013004                     **
//*???2010.11.13                          **
//****************************************
int a,i,j,flag = 1;
void recycle(int,char[]); 
int main() 
{
    int i;
    char str[500];
    cin.getline(str,500); 
    for(i = 2;str[i] != '\0';i++)
          recycle(i,str);
     
} 
void recycle(int a,char str[])
{
            for(i = 0;str[i] != '\0';i++)
            {
				  flag = 1;
                  for(j = 0;j < a;j++)
                  {
                        if(str[i + j] != str[i + a - 1 - j])
                        {
                                 flag = 0;
                                 break;
                        }
                  }
                  if(flag)
                  {
                          for(j = i ;j < i + a;j++)
                              cout<<str[j];
                  }
                  cout<<endl;
            }
return;
}
//**************************
//*???????          *
//*?????? 1200012775 *
//*???2012/11/13        *
//**************************
int main()
{
	char str[500];	//?????
	int leap, i, length, k, j;	//??????
	for (i = 0; ; i++)
	{
		cin.get(str[i]);	//????
		if (str[i] == '\n')	//?????
		{
			length = i - 1;	//??????????1
			break;	//????
		}
	}
	for (j = 1; j < length; j++)	//???2?length
		for (i = 0; i <= length - j; i++)	//???0???
		{
			leap = 0;	//????leap?0
			for (k = 0; k <= j/2 + 1; k++)
				if (str[i + k] != str[i + j - k])	//????
				{
					leap = 1;	//?????
					break;	//????
				}
			if (leap == 0)	//????
			{
				for (k = i; k <= i + j; k++)
					cout << str[k];	//?????
				cout << endl;
			}
		}
	return 0;
}
int main()
{char a[505],b[505],c[505];
int i,j,len,k,e=0;
scanf("%s",a);
len=strlen(a);
for(i=2;i<=len;i++)
{  
	for(j=0;j<=len-i;j++)
{   for(k=j;k<=j+i-1;k++)
{     b[k-j]=a[k];}
b[k-j]='\0';
for(k=0;k<i;k++)
{c[i-1-k]=b[k];}
//e=0;
  //for(k=0;k<i;k++)
//{if(c[k]!=b[k])
  // e=e+1;}
c[i]='\0';
 // if(e==0)
if(strcmp(c,b)==0)
printf("%s\n",b);}}
return 0;
}
int main()
{
	char c[500];
	cin>>c;
	for(int i=2;i<=strlen(c);i++)
	{
		for(int j=0;j<=strlen(c)-i;j++)
		{
			int p=1;
			for(int k=j;k<j+i/2;k++)
			{
				
				if(c[k]!=c[j+j+i-1-k])
				{
					p=0;
					break;
				}
				
			}
			if(p==1)
			{
				for(int o=j;o<j+i;o++)
				{
					cout<<c[o];
				}
				cout<<endl;
			}
		}
	}



	return 0;
}
void pdjsc(char c[100])
{
	int i,j,k,l,m,n,p=0;
	char tp,a,b;
	l=strlen(c)-1;
	for(i=0;i<=l;i++)
	{if (c[i]==c[l-i]) continue;
	 else 
		{p=1;
		 break;
		}
	}
	if (p==0) printf("%s\n",c);
}
int main()
{
	int i,j,k,l,n,m,p=0;
	char tp,a,b;
	char c[100]={' '};
	char s[100]={' '};
    scanf("%s",s);
	l=strlen(s)-1;
	for(i=1;i<=l;i++)//i?????????-1?
		for (j=0;j<=l-i;j++)//j??????
		{for (k=0;k<=i;k++) c[k]=s[k+j];
			pdjsc(c);
		}
	return 7;
}
/**
 * ? ? ??????
 * ?    ?????
 * ????: 2010?11?26?
 * ?????????????????????
*/
int main()                                  
{
	int i , j, k, t;
	char a[501];
	cin>>a;
	int len = strlen(a);								
	for( i = 2; i <= len; i++ )							//???????????2???
	{
		for( j = 0; j < len - i + 1; j++ )					//?????????????????????????????-????????
		{
			for( k = j; k <= j + i - 1; k++ )				//??j???j+i-1?i?
			{
				if( a[k] != a[2*j+i-1-k] )		//????i?????????????????????j??i??????????
					break;
			}
			if(k == j + i)							//?????????????i??????????
			{
				for( t = j; t <= j + i - 1; t++)			//??j????????i??????,???????????
					cout<<a[t];
				cout<<endl;
			}
		}
	}                 
    return 0;
}
int main()
{
	char a[500];
	int i,j,k,m,x,y;
	scanf("%s",a);
	m=strlen(a);
	for(i=2;i<=m;i++)
	for(j=0;j<=m-i;j++)
	{
	for(k=0,x=0;k<i/2;k++)
	{
	if(a[j+k]==a[j+i-1-k])
	x=1;
	else
	{
	x=0;
	break;
	}
	}
	if(x==1)
	{
	for(y=j;y<=j+i-1;y++)
	printf("%c",a[y]);
	printf("\n");
	}
	x=0;
	}
}
int main()
{
  char a[500];
  cin.getline(a,500);
  int i,j,k=1,l;
  l=strlen(a);
  while(k<l)
  {
    
    for(i=0,j=k; j<l; i++,j++)
        {
			int begin=i,end=j;
			while(begin<end)
            {
				if(a[begin]!=a[end]) break;
				else
                {
					begin++;
					end--;
				}
			}
			if(begin>=end)
            {
				int print=i;
				for(print; print<=j; print++)
					cout<<a[print];
				cout<<endl;
			}
		}
    k++;
  }
  cin.get();cin.get();cin.get();
  return 0;
}
int main()
{
int judge(int s,int e,char a[]);
void print(int s,int e,char a[]);
int n,m=1,i,j;
char a[500];
scanf("%s",a);
n=strlen(a);
//printf("%d \n",n);
//printf("%s \n",a);
for(i=1;i<=n-1;i++)
{
    for(j=0;j<=n-i-1;j++)
    {
    int q;
    q=judge(j,j+i,a);
    if(q==1&&m==1)
        {print(j,j+i,a);m++;}
    else if(q==1&&m!=1)
        {printf("\n");print(j,j+i,a);}
    }

}
return 0;
}
int judge(int s,int e,char a[500])
{
    if (s >= e) return 1;
    else if(a[s]!=a[e])
    return 0;
    else if(a[s]==a[e])
    {
        s++;e--;
        return judge(s,e,a);
    }
}
void print (int s,int e,char a[])
{
    int i;
    for(i=s;i<=e;i++)
    printf("%c",a[i]);
}
int main()
{
 char str[500];
 int i,j,len,n,t,k;
 gets(str);
 len=strlen(str);
 for(n=2;n<=len;n++)
 {
 for(i=0;i+n-1<len;i++)
 {
     t=i;
     for(j=i+n-1;t<j;j--,t++)
     {
  if(str[t]!=str[j])
  {
   break;
  }
  else
  if((j==t+1)||(j==t+2))
  {
  for(k=i;k<=i+n-1;k++)
  printf("%c",str[k]);
  printf("\n");
  }
     }
 }
 }
 return 0;
}
//*******************************
//????4.cpp                 *
//???2012?11?10?          *
//????? 1? 1200012895     *
//???????                *
//*******************************
int main()
{
	char a[501], c;                                        //a??????c??????
	int i = 1, j, k, l = 0, t = 0, sum;                    //i????????j?k?????l?sum??k??????sum?????????
    while ((c = cin.get()) != '\n')                        //??????????a
	{
		a[i] = c;
		i++;
	}
	i--;                                                   //???????
	for (sum = 2; sum <= i; sum = sum + 2)                 
	{
		for (j = 1; j <= i - sum + 1; j++)
		{
			for (k = j; k <= sum / 2 + j - 1; k++)         //???????????
			{
				l = sum + j - (k - j + 1);
				if (a[k] == a[l])
					t++;
				l = 0;
			}
			if (t == sum / 2)                              //?????????????????????????
			{
				for (k = j; k <= sum + j - 1; k++)
					cout << a[k];
				cout << endl;
			}
			t = 0;                                         //??
		}
	}
	return 0;
}
int main(int argc, char *argv[])
{
  int i,j,k,n=0;
  char a[500]={'\0'};
  gets(a);
  for(i=0;i<500;i++)
  {if(a[i]=='\0')
   {
     n=i;
     break;
   }
  }
  for(i=1;i<n;i++)
  {
      for(j=0;j+i<n;j++)
      {
            for(k=j;k<=j+i;k++)
            {
                 if(a[k]!=a[2*j+i-k])
                 break;
            }
            if(k==j+i+1)
            {
            for(k=j;k<=j+i;k++)
                printf("%c",a[k]);
            printf("\n");
            }
      }
  }
  return 0;
}
void main()
{
	int i,j,h,k,r;
	char a[500],b[500],c[500];
	gets(a);
	h=strlen(a);
	for(i=2;i<=h;i++)
	{
		for(j=0;j<=h-i;j++)
		{
			char b[500]={0},c[500]={0};
			for(k=j,r=0;r<i;k++,r++)
			{
				b[r]=a[k];
				c[i-r-1]=a[k];
			}
			if(strcmp(b,c)==0)
				printf("%s\n",b);
		}
	}
}
int main()
{
	char str[503];
	int i, j, k, p, m, l;
	cin >> str;
	l=strlen(str);
	for (m=2;m<=l;m=m+1)
	{
		for (i=0;str[i+1]!='\0';i++)
		{
			if (m%2==0)
			{
				j=i;
				p=i+1;
			}
			else
			{
				j=i-1;
				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;
				}
			}		
		}
	}	
	return 0;
}
int main()
{
	char a[501],*p;
	int num=0,i,j,m,len;
	scanf("%s",a);
	len=strlen(a);
	for(i=2;i<=len;i++)
	{
		for(p=a,j=0;j<=len-i;j++,p++)
		{
			for(m=i-1;m>0;m-=2,p++)
			{
				if(*p!=*(p+m))
				{
					num=1;
					break;
				}
			}
			if(num==0)
			{
				for(p=&a[j],m=1;m<=i;m++,p++)
				{
				printf("%c",*p);
				}
				printf("\n");
			}
			num=0;
			p=&a[j];
		}
	}
	return 0;
}
//*************************************
//*   ????                        *
//*   ??????                    *
//*   ?????2011?12?18?        *
//*************************************


int main()
{
	int n, i, j, flag, p;
	char a[1000];
	cin >> a;//?????
	n = strlen(a);//????????
	for(i = 2; i <= n; i ++)//i??????????????
	{
		for(p = 0; p <= n - i; p ++)//p???????????
		{
			flag = 1;//flag???????????
			for(j = p; j < p + i; j ++)//j?????????
			{
				if(a[j] != a[2 * p + i - 1 - j])
				{
					flag = 0;
					break;//????????,flag??0,??????
				}
			}
			if(flag == 1)
			{
				for(j = p; j < p + i; j ++)
					cout << a[j];//???????,????
				cout << endl;
			}
		}
	}
	return 0;
}
int main()
{
    int i,i1,d,sum=0;                 //d??????????d?2?3?4?5?6???
    int pl[500]={0};
    int sl[500]={0};
    char s[500];
    
    scanf("%s",s);
    
    for (i=0; s[i]!='\0'; i++) {                 
        if (s[i]==s[i+1]) {
            printf("%c%c\n",s[i],s[i+1]);
            pl[i]=pl[i+1]=2;
        }
    }
    for (i=0; s[i]!='\0'; i++) {
        if (s[i]==s[i+2]) {
            printf("%c%c%c\n",s[i],s[i+1],s[i+2]);
            sl[i+1]=3;
        }
    }
    
    
    for (d=4; d<=strlen(s); d++)
    {
        if (d%2==0)
        {
            for (i=0; s[i]!='\0'; i++,sum=0)
            {
                if (pl[i+d/2-1]==(d-2)&&pl[i+d/2]==(d-2)&&s[i+d-1]==s[i])
                {
                    for (i1=i; i1<i+d-1; i1++)
                    {
                        printf("%c",s[i1]);
                    }
                    printf("%c\n",s[i+d-1]);
                    pl[i+d/2-1]=pl[i+d/2]=d;
                }
            }
        }
        if (d%2==1)
        {
            for (i=0; s[i]!='\0'; i++,sum=0)
            {
                if (sl[i+d/2]==(d-2)&&s[i+d-1]==s[i])
                {
                    for (i1=i; i1<i+d-1; i1++)
                    {
                        printf("%c",s[i1]);
                    }
                    printf("%c\n",s[i+d-1]);
                    sl[i+d/2]=d;
                }
            }
        }
    }
    return 0;
}
int i , l ;
char str[501];
void f(int number,int length);
int main()
{
	int lenth;
	gets(str);
	lenth = strlen(str);
	for( l = 2 ; l <=  lenth - 1 ; l++)
		for( i = 0 ; i <= lenth - 2 ; i ++)
		{
			if( i + l - 1 <= lenth)
				f(i , l);
		}
	return 0;
}
void f(int number,int length)
{
	int j ;
	if(length <= 0 )
	{
		for(j = i ; j <= i + l - 1 ; j ++)
			printf("%c", str[j])  ;
			printf("\n");
	}
	else if( str[number] == str[number + length - 1] )
		f(number + 1 , length - 2);
	return;
}
int main()
{
	char a[600];
	scanf("%s",a);
	int L;
	int t;
	L=strlen(a);
	int i,j,k,p;
	for(i=2;i<=L;i++)
	{   
		if(i%2==0)
		{
			for(j=i/2-1;j<=L-i/2;j++)
			{    t=0;
				for(k=0;k<i/2;k++)
				{
					if(a[j-k]!=a[j+k+1])
					{	t=1;
					break;}
				}
				if(t==0)
				{for(p=j-i/2+1;p<=j+i/2;p++)
						printf("%c",a[p]);
				
					printf("\n");
				}
			}
		}
	}






	return 0;
}
void output(int);
char word[500];
int len;
int main()
{
	int i;
	cin.getline(word, 500);
	len = strlen(word);
	for (i = 2; i <= len; i++)
		output(i);
	return 0;
}


void output(int i)
{
	int j, k;
	for (j = 0; j <= len - i; j++)
		{	
			k = j;
			while (word[k] == word[2 * j + i - 1 - k] && k < 2 * j + i - 1 - k)
				k++;
			if (k >= 2 * j + i - 1 - k)
			{
				for (k = j; k < j + i; k++)
					cout << word[k];
				cout << endl;
			}
		}
}
int main()

{
	int l;
	char p[505];
	int b, w;
	int i;
	int flag;

	cin >> p;

	l = strlen(p);

	for(w = 2; w <= l; w ++)
		for(b = 0; b <= l - w; b ++)
		{
			flag = 1;

			for(i = 0; i < w / 2 + 1 ; i++)
			{ 
				if(p[b + i] != p[b + w - 1 - i])
				{
					flag = 0;
					break;
				}
			}

			if(flag == 1)
			{
				for(i = b; i < b + w; i ++)
					cout << p[i];

				cout << endl;
			}
		}

		return 0;
}
int isgoodsubstr( char * s, int l, int r )
{
	if ( l > r )
		return -1;//wrong!
	int i = l, j = r;
	for ( ; i < j; i++, j-- )
		if ( s[i] != s[j] )
			return 0;
	return 1;
}

int main()
{
	char s[501];
	gets(s);
	int i = 0, j = 0, l = strlen(s);
	int k = 0;
	for ( i = 2; i <= l; i++ )
	{
		for ( j = 0; j+i-1 < l; j++ )
		{
			if ( isgoodsubstr( s, j, j+i-1 ) == 1 )
			{
				for ( k = j; k <= j+i-1; k++ )
					putchar(s[k]);
				putchar('\n');
			}
		}
	}
	return 0;
}
void main()
{
	char a[100];
	int l,i,j,k,len,flag;
	scanf("%s",a);
	len=strlen(a);
	for (l=2;l<len;l+=2)
	{
		for(i=0;i<len;i++)
		{
			for(j=0;j<l/2;j++)
			{
				if(a[i+j]==a[i+l-1-j]) flag=1;
				else 
				{
					flag=0;
					break;}
			}
			if (flag==1)
			{
				for(k=i;k<i+l;k++)
					printf("%c",a[k]);
				printf("\n");
			}
		}
	}
}
	
	
	
	
	
	
	//	abcddcbaab
void judge(int start,int l);
char str[505];
int main()
{
	cin>>str;
	int l=strlen(str);
	for(int i=2;i<=l;i++)
	{
		for(int j=0;j<=l-i;j++)
		{
			judge(j,i);
		}
	}
	return 0;
}
void judge(int start,int l)
{
	int flag=1;
	for(int i=0;i<l/2;i++)
	{
		if(str[start+i]!=str[start+l-1-i])
		{
			flag=0;
			break;
		}
	}
	if(flag==1)
	{
		for(int i=start;i<start+l;i++)
		{
			cout<<str[i];
		}
		cout<<endl;
	}
}
int main ()
{
	char c[500];
	int i, j, k, len, flag;
	cin.getline(c,500);
	len = strlen(c);
	for (i = 2; i <= len; i++)
	{
		for (j = 0; j <= len - i; j++)
		{
			flag = 1;
			for (k = 0; k < (i + 1) / 2; k++)
			{
				if (c[j + k] != c[j + i - 1 - k])
				{
					flag = 0;
					break;
				}
			}
			if (flag)
			{
				for (k = 0; k < i; k++)
					cout << c[j + k];
				cout << endl;
			}
		}
	}
	return 0;
}
int main()
{
    char a[500];
    char t[500];//??? 
    char b[1000][500];//????? 
    cin>>a;
    int i,j,k,r;
    int count=0;
    int l=strlen(a);
    for(i=0;i<l;i++)
    {
                    for(k=1;i+k<l;k++)
                    {
                                      int h=1;//???????? 
                                      for(j=0;j<=k;j++)
                                      {
                                                       if(a[i+j]!=a[i+k-j])
                                                       {
                                                                           h=0;
                                                                           break; 
                                                       }
                                      }//?????????????????? 
                                      if(h==1)
                                      {
                                              for(j=0;j<=k;j++)
                                              {
                                                               b[count][j]=a[i+j];
                                              }
                                              count++;
                                      }//???????????b 
                    }
    }
    for(i=0;i<count;i++)
    {
                        for(j=count-2;j>=i;j--)
                        {
                                               if( strlen(b[j])>strlen(b[j+1]) )
                                               {
                                                   strcpy(t,b[j]);
                                                   strcpy(b[j],b[j+1]);
                                                   strcpy(b[j+1],t);
                                               }//?????????? 
                        }
    }
    for(r=0;r<count;r++)
    {
                        cout<<b[r]<<endl;
    }//?? 
    return 0;
}
int main()
{
	char s[80],*h,*t,*f;
	int i,j,len,flag=1;
	scanf("%s",s);
	len=strlen(s);
	for(i=2;i<=len;i++)
	{
		f=s;
		for(;f<=(s+len-i);f++)
		{
			h=f;
			t=h+i-1;
			for(j=1;j<=(int)(i/2);j++,h++,t--)
			{
				flag=1;
				if(*h!=*t)
				{
					flag=0;
					break;
				}
			}
			if(flag)
			{
				h=f;
				for(;h<f+i;h++)
					printf("%c",*h);
				printf("\n");
			}
		}
	}
	return 0;
}
int main()
{
	char a[501];

	int i,n,k,j,flag,nf=0;
	gets(a);
	n=strlen(a);
	for(i=2;i<=n;i++)
	{
		for(j=0;j<n-i+1;j++)
		{
			flag=1;
			for(k=0;k<i/2;k++)
			{
				if(a[j+k]!=a[j+i-1-k])
				{
					flag=0;
					break;
				}
			}
			if(flag)
				{
					if(nf)
						printf("\n");
					for(k=0;k<i;k++)
						printf("%c",a[j+k]);
					
					nf=1;
				}
		}
	}
	return 0;
}
void main()
{
	int n=0,i,j,k;
	char str[200];
	gets(str);
	for(i=0;str[i]!='\0';i++)
	{
		n++;
	}
	for(i=2;i<=n;i++)
	{
		for(j=0;j<=n-i;j++)
		{
			int flag=1;
			for(k=0;k<i;k++)
			{
				if(str[j+k]!=str[j+i-1-k])
				{
					flag=0;
				}
			}
			if(flag)
			{
				for(k=j;k<=i+j-1;k++)
				{
					printf("%c",str[k]);
				}
				printf("\n");
			}
		}
	}
}
int judge(char front[MAX-1],int m)
{
	int i,out;
	char back[MAX-1]={""};
	for(i=0;i<m;i++)
	{
		back[i]=front[m-i-1];
	}
	if(strcmp(back,front)==0)
	{
		out=1;
	}
	else
		out=0;
	return out;
}

int main()
{
	int len,i,j,k;
	char s[MAX];
	scanf("%s",&s);
	len=strlen(s);
	for(i=2;i<=len;i++)
	{
		char son[MAX-1][MAX-1]={""};
		for(j=0;j<=len-i;j++)
		{
			char *p=&s[j];
			for(k=0;k<i;k++)
			{
				son[j][k]=*p;
				p++;
			}
		}
		for(j=0;j<=len-1;j++)
		{
			int out;
			out=judge(son[j],i);
			if(out==1)
			{
				for(k=0;k<i;k++)
					printf("%c",son[j][k]);
				printf("\n");
			}
			
		}
	}
	return 0;
}
int ishuiwen(char p[],int x)
{
	int j,result=0;
	char q[505]={""};
	for(j=0;j<x;j++)
		q[j]=p[x-j-1];
    if(strcmp(p,q)==0)
		result=1;
	return result;
}

int main()
{
	char a[505],b[505]={""};
	int i,len,j,k;
	gets(a);
	len=strlen(a);
    for(i=2;i<=len;i++)
		for(j=0;j<len+1-i;j++)
		{
			for(k=0;k<i;k++)
				b[k]=a[k+j];
			if(ishuiwen(b,i))
				printf("%s\n",b);
		}
	return 0;
}
int main()
{
	char c;
	char str[501];
	int i,j,r,flag,t,k;
	scanf("%s",str);
	for(i=0;str[i]!='\0';i++)
	{
		t=i+1;
	}
	for(j=2;j<=t;j++)
	{
		for(i=0;i<=t-j+1;i++)
		{
			for(r=i,flag=1,k=j-1;r<=i+j-1;r++,k--)
			{
				if(str[r]!=str[i+k])
				{
					flag=0;
					break;
				}
			}
			if(flag==1)
			{
				for(r=i;r<=i+j-1;r++)
				{
					printf("%c",str[r]);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
int main()
{
	char s[500],d[500]={'\0'},d2[500]={'\0'};
	int len,i,j,k,r,c,ent=0;
	scanf("%s",s);
	len=strlen(s);
	for(i=2;i<=len;i++)
	{
		for(j=0;j<=len-i;j++)
		{
			for(c=0;c<=len;c++)
			{d[c]='\0';d2[c]='\0';}
			for(k=j;k<j+i;k++)
				d[k-j]=s[k];
			for(r=0;r<i;r++)
				d2[r]=d[i-1-r];
			if(strcmp(d2,d)==0)
			{
				if(ent==0)
				{printf("%s",d);ent=1;}
				else
					printf("\n%s",d);
			}
		}
	}
}
/*???????
 *?????
 */
int huiwen(char a[])     //????????
{char b[100]={0};
 int i,l;
 l=strlen(a);
 for(i=0;i<l;i++)
	 b[l-1-i]=a[i];
 if(strcmp(b,a)==0)
 return 1;
 return 0;}
int main(){
    char a[100],s[100];
    cin>>a;int l,la=strlen(a),k=0,p=0;
    for(l=2;l<=la;l++){   //??????
    for(int i=0;i<=la-l;i++){   //???????????
    for(int j=i;j<l+i;j++)
    {s[p]=a[j];p++;}s[p]='\0';  //????'\0'??
    if(huiwen(s))cout<<s<<endl;p=0;}}//????????
    return 0;}
void main(){
	void f(char *p,int n);
	int i,j,l;
	char a[1000],*p;
	gets(a);
	l=strlen(a);
	p=a;
	for(i=2;i<l+1;i++)
	{
		for(j=0;j<l-i+1;j++)
		{
			f(p+j,i);
		}
	}
	scanf("%d",&i);
}

void f(char *p,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		if(*(p+i)!=*(p+n-1-i)) i=10000;
	}
	if(i==n)
	{
		for(i=0;i<n;i++)
		{
			printf("%c",*(p+i));
		}
		printf("\n");
	}
}
main ()
{
	char a[500];
	int i, j, k, s, l, flag;
	cin >> a;
	l = strlen(a);
	for(i = 2; i <= l; i++)
	{
		for (j = 0; j <= l - i; j++)
		{
			flag = 1;
			for (k = 0; k < i / 2; k++)
			{
				if (a[j + k] != a[j + i - k - 1])
				{
					flag = 0;
					break;
				}
			}
			if(flag)
			{
				for (s = 0; s < i; s++)
					cout << a[j + s];
				cout << endl;
			}
		}
	}
	return 0;
}