#include <iostream>
#include <cstdlib>
#include <cassert>
#define GAMES 1000
using namespace std;

int fr[26],ft[26];

int isPoint(int x) {
  return x==10 || x==14;
}

int freeCard(int x) {
  if(fr[7]==4) {
    --fr[7];
    return 7;
  }
  if(!x) {
    for(int i=8; i<=13; ++i) if(i!=10 && fr[i]>ft[i]) {
      --fr[i];
      return i;
    }

    if(fr[10]+fr[7]>=ft[10]+ft[7] && fr[10]) {
      --fr[10];
      return 10;
    }
    if(fr[14]+fr[7]>=ft[14]+ft[7] && fr[14]) {
      --fr[14];
      return 14;
    }
    int mi=(1<<30),c=-1;
    for(int i=8; i<=13; ++i) if(i!=10 && fr[i] && ft[i]<mi) {
      mi=ft[i];
      c=i;
    }
    if(c!=-1) {
      --fr[c];
      return c;
    }
    
  }

  if(isPoint(x) && fr[x]+fr[7]>=ft[x]+ft[7]) {
      if(fr[x]) {
        --fr[x];
        return x;
      }
      if(fr[7]) {
        --fr[7];
        return 7;
      }
  }
  if(!isPoint(x) && fr[x] && x!=7) {
    --fr[x];
    return x;
  }
  /*
  if(isPoint(x) && fr[x]+fr[7]<3) {
    for(int i=8; i<=14; ++i) if(!isPoint(i) && fr[i]) {
      --fr[i];
      return i;
    }
  }
  if(isPoint(x) && ft[x]+ft[7]>fr[x]+fr[7]) {
    for(int i=8; i<=14; ++i) if(fr[i] && !isPoint(i)) {
      --fr[i];
      return i;
    }
  }
  if(fr[x]) {
    --fr[x];
    return x;
  }
  if(isPoint(x) && fr[7] && ft[7]+ft[x]<=fr[x]+fr[7]) {
    --fr[7];
    return 7;
  }
  for(int i=8; i<=14; ++i) if(fr[i] && !isPoint(i)) {
    --fr[i];
    return i;
  }*/
  int mi=(1<<30),c=-1;
  for(int i=8; i<=13; ++i) if(i!=10 && fr[i] && ft[i]<mi) {
    mi=ft[i];
    c=i;
  }
  if(c!=-1) {
    --fr[c];
    return c;
  }
  for(int i=14; i>=7; --i) if(fr[i]) {
    --fr[i];
    return i;
  }
  return -1;
}

int main() {
  for(int t=1; t<=GAMES; ++t) {
    for(int i=7; i<=14; ++i) {
      ft[i]=4;
      fr[i]=0;
    }
    for(int i=0; i<4; ++i) {
      int x; assert(cin>>x); ++fr[x];
      --ft[x];
    }
    int cp=0,op,inmana=4;
    while(true) {
      if(!cp) {
        assert(cin>>op);
        do {
          --ft[op];
          int fc=freeCard(op);
          if(fc>14) abort();
          cout<<fc<<endl;
          --inmana;
          assert(cin>>op);
        }while(op>4);
      }else {
        int fc=freeCard(0);
        if(fc>14) abort();
        cout<<fc<<endl;
        int x; assert(cin>>x); --ft[x];
        --inmana;
        int ci=inmana;
        for(int i=1; i<=ci; ++i) {
          if((x!=fc && x!=7) || (!fr[fc] && !fr[7])) break;
          int card=freeCard(fc);
          if(card>14) abort();
          cout<<card<<endl;
          --inmana;
          int x; assert(cin>>x); --ft[x];
        }
        cout<<0<<endl;
        assert(cin>>op);
      }
      if(op==2) cp=0;
      else if(op==3) cp=1;
      else {
        cp=0;
        int a,b; assert(cin>>a>>b); break;
      }
      int n; assert(cin>>n);
      inmana+=n;
      for(int i=1; i<=n; ++i) {
        int x; assert(cin>>x); ++fr[x];
        --ft[x];
      }
    }
  }
}