stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main(){

    string a;

    cin>>a;

    string b=a;

    reverse(a.begin(),a.end());

    for(int i=0;i<a.size();++i)

    {

        if(a[i]=='b') a[i]='d';

        else if(a[i]=='d') a[i]='b';

        else if(a[i]=='p') a[i]='q';

        else if(a[i]=='q') a[i]='p';

    }

    if(a==b) cout<<"Yes";//判断

    else cout<<"No";

}

// Faster C++ solution for the same problem (measured speedup: 2.618923197940538x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

string a,b;

map<char,char> mp;

int main(){

	mp['q']='p';

	mp['p']='q';

	mp['b']='d';

	mp['d']='b';

	cin>>a;

	for(int i=0;i<a.length();i++){

		b=mp[a[i]]+b;

	}

	if(b==a){

		printf("Yes");

	}

	else printf("No");

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 2.6217254166572914x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main()

{

    string a;

    cin>>a;

    string jing=a;

    reverse(a.begin(),a.end());

    for(int i=0;i<a.size();++i)

    {

        if(a[i]=='b') a[i]='d';

        else if(a[i]=='d') a[i]='b';

        else if(a[i]=='p') a[i]='q';

        else if(a[i]=='q') a[i]='p';

    }

    if(a==jing) cout<<"Yes";

    else cout<<"No";

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 2.618923197940538x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main(){

    string a;

    cin>>a;

    string b=a;

    reverse(a.begin(),a.end());//交换

    for(int i=0;i<a.size();++i)

    {

        if(a[i]=='b') a[i]='d';//镜面对称

        else if(a[i]=='d') a[i]='b';//请注意,else一定要加,不然就白做了

        else if(a[i]=='p') a[i]='q';

        else if(a[i]=='q') a[i]='p';

    }

    if(a==b) cout<<"Yes";//判断

    else cout<<"No";

}

// Faster C++ solution for the same problem (measured speedup: 2.618923197940538x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
//666yuchen

#include<bits/stdc++.h>

using namespace std;

string st;

char b[500];

int main()

{

  cin>>st;

  b['b']='d';b['d']='b';b['p']='q';b['q']='p';

  for(int i=0;i<st.size();i++)if(b[st[i]]!=st[st.size()-1-i]){cout<<"No"<<endl;return 0;}

  cout<<"Yes"<<endl;

  return 0;

}

// Faster C++ solution for the same problem (measured speedup: 2.604253681459611x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main(){

    string a;

    cin>>a;

    string b=a;

    reverse(a.begin(),a.end());

    for(int i=0;i<a.size();++i){

        if(a[i]=='b') a[i]='d';

        else if(a[i]=='d') a[i]='b';

        else if(a[i]=='p') a[i]='q';

        else if(a[i]=='q') a[i]='p';

    }

    if(a==b) cout<<"Yes";

    else cout<<"No";

}

// Faster C++ solution for the same problem (measured speedup: 2.618923197940538x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main(){

    string a;

    cin>>a;

    string b=a;

    reverse(a.begin(),a.end());

    for(int i=0;i<a.size();++i){

        if(a[i]=='b') a[i]='d';

        else if(a[i]=='d') a[i]='b';

        else if(a[i]=='p') a[i]='q';

        else if(a[i]=='q') a[i]='p';

    }

    if(a==b) cout<<"Yes";

    else cout<<"No";

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 2.618923197940538x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

long long i;

string s,S;

int main()

{

	std::ios_base::sync_with_stdio(false),cin.tie(0);

	cin>>s,S=s,reverse(s.begin(),s.end());

	for (i=0;i<s.size();i++)

		s[i]==98?s[i]=100:s[i]==100?s[i]=98

			:s[i]==112?s[i]=113:s[i]==113?s[i]=112:0;

	s==S?puts("Yes"):puts("No");

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 2.635657811596923x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main()

{

    string a,b;

	cin>>a;b=a;

	reverse(b.begin(),b.end());

	for(int i=0;i<b.size();i++)

	{

		if(b[i]=='b') b[i]='d';

		else if(b[i]=='d') b[i]='b';

		else if(b[i]=='q') b[i]='p';

		else b[i]='q';

	}

	if(a==b) cout<<"Yes";

	else cout<<"No";

}

// Faster C++ solution for the same problem (measured speedup: 2.6210558200444423x):
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s[100001],ss[100001];

int main(){

	scanf("%s",s);

	memcpy(ss,s,sizeof(s));

	int n=strlen(s);

	reverse(s,s+n);

	for(int i=0; i<n; ++i)

		switch(s[i]){

			case 'd':

				s[i]='b';

				break;

			case 'b':

				s[i]='d';

				break;

			case 'p':

				s[i]='q';

				break;

			case 'q':

				s[i]='p';

				break;

		}

	puts(strcmp(ss,s)?"No":"Yes");

	return 0;

}
// Slower C++ solution:
#include <cstdio>

#include <iostream>

#include <cstring>

using namespace std;

string s;



string rev(string ori){

	string ss=ori;

	int j=ori.length()-1;

	for (int i=0;i<s.length();i++){

		ss[i]=ori[j];j--;

	}

	return ss;

}



int main(){

	cin>>s;

	string s2=s;

	string s3=rev(s);

	for (int i=0;i<s.length();i++){

		if(s2[i]=='b') {s2[i]='d';continue;}

		if(s2[i]=='d') {s2[i]='b';continue;}

		if(s2[i]=='p') {s2[i]='q';continue;}

		if(s2[i]=='q') {s2[i]='p';continue;}

	}

	string s4=rev(s2);

	//cout<<s2<<endl<<s3<<endl<<s4<<endl;

	if(s2==s||s3==s||s4==s) cout<<"Yes";

	else cout<<"No";

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.367528736724859x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

char str[100010];

int main() {

	scanf("%s",&str);

	int len=strlen(str);

	if(len%2!=0) {

		printf("No");

		return 0;

	}

	for(int i=0; i<len/2; i++) {

		int r=abs(str[i]-str[len-i-1]);

		if(r!=1&&r!=2) { 

			printf("No");

			return 0;

		}

	}

	printf("Yes");

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.26732891629318x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<cstdio>

#include<iostream>

#include<cstring>

#include<stack>

using namespace std;

stack<char>s;

string a;

int main(){

	cin>>a;

	int n=a.size();

	for(int i=0;i<n;i++){

		s.push(a[i]);

	}

	long long ans=1;

	for(int i=0;i<n;i++){

		char top=s.top();

		if(top=='b')

			top='d';

		else

			if(top=='d')

				top='b';

		else

			if(top=='p')

				top='q';

		else

			if(top=='q')

				top='p';

		if(top==a[i]){

			ans=1;

			s.pop();

		}

		else{

			ans=0;

			break;

		}

	}

	if(ans==0)

		printf("No");

	else

		printf("Yes");

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.356630936141865x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

string s;

int main(){

    cin>>s;

    int c=s.size();

    if(c%2!=0){

        printf("No");

        return 0;

    }

    for(int i=0;i<c/2;i++){

        short t=abs(s[i]-s[c-i-1]);

        if(t!=1&&t!=2){ 

            printf("No\n"); 

            return 0;

        }

    }

    printf("Yes\n"); 

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.265485537031408x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

string s;

int main(){

    cin>>s;

    int c=s.size();

    if(c%2!=0){

        printf("No");

        return 0;

    }

    for(int i=0;i<c/2;i++){

        short t=abs(s[i]-s[c-i-1]);

        if(t!=1&&t!=2){ 

            printf("No\n"); 

            return 0;

        }

    }

    printf("Yes\n"); 

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.265236367797622x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

char a[100005],b[100005];

int main()

{

	cin>>a;

	for(int i=0;i<strlen(a);i++){

		b[i]=a[strlen(a)-i-1];

		if(b[i]=='b')

		b[i]='d';

		else if(b[i]=='d')

		b[i]='b';

		else if(b[i]=='p')

		b[i]='q';

		else if(b[i]=='q')

		b[i]='p';

		if(b[i]!=a[i]){

			cout<<"No";

			return 0;

		}

	}

	cout<<"Yes";

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.277075379561661x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<iostream>

#include<iomanip>

#include<cmath>

#include<cstring>

#include<cstdio>

#include<queue>

#include<algorithm>

using namespace std;

char s[100005];

int ma[205];

int main()

{

	scanf("%s",s);

	int len=strlen(s);

	ma['p']=1,ma['q']=4,ma['b']=2,ma['d']=3;

	for(int i=0;i<len;i++)

	{

		if(ma[s[i]]+ma[s[len-i-1]]!=5)

		{

			printf("No");

			return 0;

		}

	}

	printf("Yes");

}

// Faster C++ solution for the same problem (measured speedup: 5.269803542245159x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<cstdio>

#include<iostream>

#include<cstring>

#include<stack>

using namespace std;

stack<char>s;

string a;

int main(){

    cin>>a;

    int n=a.size();

    for(int i=0;i<n;i++){

        s.push(a[i]);

    }

    bool ju=1;

    for(int i=0;i<n;i++){

        char top=s.top();

        if(top=='b') top='d';

        else if(top=='d') top='b';

        else if(top=='p') top='q';

        else if(top=='q') top='p';

        if(top==a[i]) {

            ju=1;

            s.pop();

        }

        else {

            ju=0;

            break;

        }

    }

    if(ju==0) printf("No");

    else printf("Yes");

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.357972728334545x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

string s;

int main()

{

	int l,i,j;

	cin>>s;

	l=s.size();

	if(l%2)

	{

		cout<<"No";

		return 0;

	}

	for(i=0,j=l-1;i<j;i++,j--)

	{

		if(s[i]=='b'&&s[j]!='d')

		{

			cout<<"No";

			return 0;

		}

		else

		{

			if(s[i]=='d'&&s[j]!='b')

			{

				cout<<"No";

				return 0;

			}

			else

			{

				if(s[i]=='p'&&s[j]!='q')

				{

					cout<<"No";

					return 0;

				}

				else

				{

					if(s[i]=='q'&&s[j]!='p')

					{

						cout<<"No";

						return 0;

					}

				}

			}

		}

	}

	cout<<"Yes";

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.319199127207062x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<iostream>

#include<cstdio>

#include<algorithm>

#define reg register

#define ios ios::sync_with_stdio(false)

using namespace std;

int t[101],p[101];

int main() 

{

	ios;string s1,s2;cin>>s1;s2=s1;

	reverse(s2.begin(),s2.end());//交换函数abc->cba //orz%%%dalao

	int l=s2.length();

	for(reg int i=0;i<=l-1;i++)

	{

		if(s2[i]=='b'){s2[i]='d';continue;}

		if(s2[i]=='d'){s2[i]='b';continue;}

		if(s2[i]=='p'){s2[i]='q';continue;}

		if(s2[i]=='q'){s2[i]='p';continue;}

	}

	if(s1==s2)puts("Yes");

	else	puts("No");

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.390791298550462x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

char s[200000];

int get[128];

int main()

{

    get['b'] = 0;

	get['p'] = 1;

	get['d'] = 2;

	get['q'] = 3;

    scanf("%s",s+1);

    for(int l=strlen(s+1),i=1;i<=(l>>1)+1;++i)

    {

        if(get[s[i]]^((get[s[l-i+1]]+2)%4))

		{

		return printf("No\n"),0;	

		 } 

    } 

    return printf("Yes\n"),0;

}

// Faster C++ solution for the same problem (measured speedup: 5.267396283605847x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

bool ismirror(string s)

{

	string ss;

	int len = s.size();

	for(int i = 0;i < len;i++)

	{

		ss += ' ';

	}

	int h = 0;

	for(int i = len-1;i >= 0;i--)

	{

		ss[h++] = s[i];

	}

	for(int i = 0;i < len;i++)

	{

		if(ss[i] == 'b')

		{

			ss[i] = 'd';

			continue;

		}else if(ss[i] == 'd')

		{

			ss[i] = 'b';

			continue;

		}else if(ss[i] == 'p')

		{

			ss[i] ='q';

			continue;

		}else if(ss[i] == 'q')

		{

			ss[i] = 'p';

			continue;

		}

	}

	if(ss == s)

	{

		return true;

	}else

	{

		return false;

	}

}

int main()

{

	string s;

	cin>>s;

	if(ismirror(s))

	{

		cout<<"Yes";

	}else cout<<"No";

	return 0;

	

}

// Faster C++ solution for the same problem (measured speedup: 5.363017581940435x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main()

{

    string a;

    cin>>a;

    string b=a;

    reverse(a.begin(),a.end());

    for(int i=0;i<a.size();++i)

    {

        if(a[i]=='b') a[i]='d';

        else if(a[i]=='d') a[i]='b';

        else if(a[i]=='p') a[i]='q';

        else if(a[i]=='q') a[i]='p';

    }

    if(a==b) cout<<"Yes";

    else cout<<"No";

}

// Faster C++ solution for the same problem (measured speedup: 5.36148641274659x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>//'三玖是天！ '.

using namespace std;

int main()

{

	string s,ss;

	cin>>s;

	ss=s;

	reverse(s.begin(),s.end());

	for(int i=0;i<s.size();i++)

	{

		if(s[i]=='b')s[i]='d';

		else if(s[i]=='d')s[i]='b';

		else if(s[i]=='p')s[i]='q';

		else s[i]='p';

	}

	if(ss==s)cout<<"Yes"<<endl;

	else cout<<"No"<<endl;

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.378346819321197x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}
// Slower C++ solution:
#include<iostream>

#include<string>

using namespace std;

char f[256];

int main()

{

	 string s,a;

	 f['b']='d';

	 f['d']='b';

	 f['p']='q';

	 f['q']='p';

	 cin>>s;

	 for(int i=s.length()-1;i>=0;i--)

		 a=a+s[i];

	 //cout<<a<<endl;

	 for(int i=0;i<s.length();i++)

		 a[i]=f[a[i]];

	 if(a==s) cout<<"Yes";

		   else cout<<"No";

}

// Faster C++ solution for the same problem (measured speedup: 5.365746751540698x):
#include<algorithm>

#include<cstdio>

#include<cstring>

#define N 100010

using namespace std;

char a[N],b[N];

int len;

signed main(int argc,char **argv)

{

	scanf("%s",&a);len=strlen(a);

	for(int i=0;i<len;++i)b[len-i-1]=a[i];

	for(int i=0;i<len;++i)

		if(b[i]=='b')b[i]='d';

		else if(b[i]=='d')b[i]='b';

		else if(b[i]=='p')b[i]='q';

		else b[i]='p';

	for(int i=0;i<len;++i)

	if(a[i]!=b[i]){printf("No");return 0;}

	printf("Yes");

	return 0;

}