WA in PALIN

I am getting wrong answer for The next palindrome question( http://www.codechef.com/problems/PALIN ) even though I tried as many different cases I could think of.Here’s the code I used please suggest any more tricky cases for which this code is not working properly.Thanx in advance.

#include<iostream> 
#include<string.h>
#define max 1000001

int main()
{
int cases,flag=0,looba=0;
long l,j,m;
char str[max];
scanf("%d",&cases);
for(int i=0;i<cases;i++)
{
	scanf("%s",&str);
	l=strlen(str);
	for(j=0;j<l/2;j++)
	{
		if(str[j]!=str[l-j-1]&&l%2==0)
		{
			flag=1;
			if(str[j]-str[l-j-1]<0&&j==0)
			{
				str[l-j-1]=str[j];
			}
			else if(str[j]-str[l-j-1]>0)
			{
				str[l-j-1]=str[j];
			}
			else
			{
				str[j]+=1;
				str[l-j-1]=str[j];
			}
		}
		else if(str[j]!=str[l-j-1]&&l%2!=0)
		{
			flag=1;
			if(str[j]>str[l-j-1])
			{
				looba=1;
			str[l-j-1]=str[j];
			}
			else
			{
				str[l-j-1]=str[j];
			}
		}
	}
	if(l%2!=0&&looba==0)
	{
		str[(l/2)]+=1;
	}
	else if(l%2==0&&flag==0)
	{
		str[l/2]+=1;
		str[l/2-1]+=1;
	}
	printf("%s\n",str);
	flag=0;
	looba=0;
}
}

i/p “9” o/p using the above code “:” expected o/p 11

Are you sure, your

scanf("%s",&str);

statement needs an

&

?

//