func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     int n, m;     cin >> n >> m;     vector<pair<int, int> > road;     for (int a = (0); a < (m); a++) {       int p, q;       cin >> p >> q;       if (p > q) swap(p, q);       road.push_back(make_pair(p, q));     }     int field[101][101];     for (int a = (0); a < (101); a++)       for (int b = (0); b < (101); b++) field[a][b] = 10000;     for (int a = (0); a < (m); a++)       for (int b = (0); b < (m); b++) {         int p = road[b].first;         int q = road[b].second;         int r = road[a].first;         int s = road[a].second;         if (p != r && p != s & q != r && q != s) {           int count = 0;           if (p < r && r < q) count++;           if (p < s && s < q) count++;           if (count == 1) {             field[a + 1][b + 1] = 1;             field[b + 1][a + 1] = 1;           }         }       }     int check[101];     for (int j = 1; j <= m; j++)       for (int i = 1; i <= m; i++)         for (int k = 1; k <= m; k++)           field[i][k] = min(field[i][k], field[i][j] + field[j][k]);     int flag = 0;     for (int a = 1; a <= m; a++)       if (field[a][a] % 2 == 1) flag = 1;     if (flag == 1)       cout <<  Impossible  << endl;     else {       int out[101];       for (int a = (0); a < (101); a++) out[a] = -1;       for (int a = 1; a <= m; a++)         if (out[a] == -1) {           out[a] = 0;           for (int b = 1; b <= m; b++)             if (field[a][b] < 200) {               out[b] = field[a][b] % 2;             }         }       int fflag = 0;       for (int a = 1; a <= m; a++)         for (int b = 1; b <= m; b++) {           if (field[a][b] == 1)             if (out[a] + out[b] != 1) fflag = 1;         }       if (fflag == 1)         cout <<  Impossible  << endl;       else {         for (int a = 1; a <= m; a++) {           if (out[a] == 0)             cout <<  o ;           else             cout <<  i ;         }         cout << endl;       }     }     return 0;   }   