#include <bits/stdc++.h>
using namespace std;
const int maxn = 101;
vector<int> v[maxn];
int n, m, x, y, a[maxn];
pair<int, int> p[maxn];
bool mark[maxn];
void dfs(int x) {
  mark[x] = true;
  for (int i = 0; i < v[x].size(); i++) {
    int next = v[x][i];
    if (a[next] == a[x]) {
      cout << "Impossible" << endl;
      exit(0);
    }
    if (!mark[next]) {
      a[next] = (a[x] + 1) % 2;
      dfs(next);
    }
  }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> x >> y;
    p[i].first = x;
    p[i].second = y;
    for (int j = 0; j < i; j++) {
      if (p[j].first == p[i].first || p[j].first == p[i].second ||
          p[j].second == p[i].first || p[j].second == p[i].second)
        continue;
      int h = 0;
      for (int k = min(p[i].first, p[i].second) + 1;
           k < max(p[i].first, p[i].second); k++) {
        if (p[j].first == k || p[j].second == k) h++;
      }
      if (h == 1) {
        v[i].push_back(j);
        v[j].push_back(i);
      }
    }
  }
  fill(a, a + m, -1);
  for (int i = 0; i < m; i++) {
    if (a[i] == -1) {
      a[i] = 0;
      dfs(i);
    }
  }
  for (int i = 0; i < m; i++) {
    if (a[i] == 0)
      cout << 'i';
    else
      cout << 'o';
  }
  cout << endl;
  return 0;
}
