Problem:
Score : 100 points

Problem Statement

On the Planet AtCoder, there are four types of bases: A, C, G and T. A bonds with T, and C bonds with G.

You are given a letter b as input, which is A, C, G or T. Write a program that prints the letter representing the base that bonds with the base b.

Constraints

b is one of the letters A, C, G and T.

Input

Input is given from Standard Input in the following format:

b

Output

Print the letter representing the base that bonds with the base b.

Sample Input 1

A

Sample Output 1

T

Sample Input 2

G

Sample Output 2

C

Solution in C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define a 0
#define c 1
#define g 2
#define t 3

int main(){
	int N,i,j,k,l,m;
	scanf("%d",&N);

	unsigned long long ans,mod=1000000007,memo[101][4][4][4]={0};
	
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			for(k=0;k<4;k++){
				memo[3][i][j][k]=1;
			}
		}
	}
	memo[3][a][g][c]=0;
	memo[3][a][c][g]=0;
	memo[3][g][a][c]=0;

	for(i=3;i<N;i++){
		for(j=0;j<4;j++){
			for(k=0;k<4;k++){
				for(l=0;l<4;l++){
					for(m=0;m<4;m++){
						if(k==a && l==g && m==c)continue;
						if(k==a && l==c && m==g)continue;
						if(k==g && l==a && m==c)continue;
						if(j==a && k==g && m==c)continue;
						if(j==a && l==g && m==c)continue;

						memo[i+1][k][l][m]+=memo[i][j][k][l];
						memo[i+1][k][l][m]%=mod;
					}
				}
			}
		}
	}

	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			for(k=0;k<4;k++){
				ans+=memo[N][i][j][k];
				ans%=mod;
			}
		}
	}

	printf("%lld\n",ans);
	return 0;
}