func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX = 1010;   int n, t, pop = -1, p[2 * MAX], para[2 * MAX], odw[2 * MAX];   inline void dodaj_pare(int a, int b) {     para[a] = b;     para[b] = a;   }   void wczytaj_dane() {     int m;     cin >> n >> m;     for (int i = 0; i < (2 * n); i++) cin >> p[i];     fill(para, para + 2 * n, -1);     while (m--) {       int a, b;       cin >> a >> b;       dodaj_pare(a - 1, b - 1);     }     cin >> t;   }   void wypisz(int x) {     assert(!odw[x]);     odw[x] = true;     cout << (x + 1) <<   n ;     fflush(stdout);   }   int najsilniejszy_sparowany() {     int x = -1;     for (int i = 0; i < (2 * n); i++)       if ((!odw[i]) && para[i] != -1 && (x == -1 || p[x] < p[i])) x = i;     return x;   }   int najsilniejszy() {     int x = -1;     for (int i = 0; i < (2 * n); i++)       if ((!odw[i]) && (x == -1 || p[x] < p[i])) x = i;     assert(x != -1);     return x;   }   int rozwiaz() {     int x = najsilniejszy_sparowany();     if (x != -1) return x;     return najsilniejszy();   }   void moj_ruch() {     if (pop != -1 && para[pop] != -1 && (!odw[para[pop]])) {       wypisz(para[pop]);       return;     }     wypisz(rozwiaz());   }   inline int wczytaj() {     int x;     cin >> x;     if (x == -1) exit(1);     return x - 1;   }   void twoj_ruch() {     int x = wczytaj();     odw[x] = true;     pop = x;   }   void zrob_test() {     wczytaj_dane();     fill(odw, odw + 2 * n, false);     if (t == 1) {       for (int q = 0; q < (n); q++) {         moj_ruch();         twoj_ruch();       }     } else {       for (int q = 0; q < (n); q++) {         twoj_ruch();         moj_ruch();       }     }   }   int main() {     zrob_test();     return 0;   }   