#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
const int N=0;
const int E=1;
const int S=2;
const int W=3;
const int Z=4;
int rs[5][4]={{0,1,5,4},{0,3,5,2},{0,4,5,1},{0,2,5,3},{3,1,2,4}};
struct xai{
int ds[6];
void round(int n){
int t=ds[rs[n][0]];
for(int i=0;i<3;i++){
ds[rs[n][i]]=ds[rs[n][i+1]];
}
ds[rs[n][3]]=t;
}
xai rounds(int n){
xai e;
for(int i=0;i<6;i++)e.ds[i]=ds[i];
if(0<n){
e.round(S);
}
if(1<n){
e.round(E);
}
if(2<n){
e.round(E);
}
if(3<n){
e.round(E);
}
if(4<n){
e.round(S);
}
return e;
}
void roundZ(){
int cs[4];
std::vector<int> vec;
for(int i=0;i<4;i++){
vec.push_back(ds[rs[Z][i]]);
}
for(int i=0;i<4;i++){
round(Z);
std::vector<int> vec2;
for(int i=0;i<4;i++){
vec2.push_back(ds[rs[Z][i]]);
}
if(vec<vec2)vec=vec2;
}
for(int i=0;i<4;i++){
ds[rs[Z][i]]=vec[i];
}
}
};
int main() {
// your code goes here
xai e,e2;
for(int i=0;i<6;i++){
scanf("%d",&e.ds[i]);
}
int n;
scanf("%d",&n);
while(n--){
int a,b,ans;
bool hit=false;
scanf("%d %d",&a,&b);
for(int i=0;i<6;i++){
e2=e.rounds(i);
if(e2.ds[0]!=a)continue;
for(int j=0;j<4;j++){
if(e2.ds[rs[Z][j]]==b){
ans=e2.ds[rs[Z][(j+1)%4]];
hit=true;
break;
}
}
if(hit==true)break;
}
printf("%d\n",ans);
}
return 0;
}
最終更新:2016年03月24日 01:02