#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[3][30];
long long b;
unordered_map<long long, pair<int, int> > mp;
int l = -(1 << 30);
long long ans;
void f(int x, int y, int z) {
  if (!x) {
    long long c[3] = {0};
    for (int i = (0); i < (z); i++) {
      int t = b >> (2 * i);
      c[t & 1] += a[t & 1][i + y * n / 2];
      c[t & 2] += a[t & 2][i + y * n / 2];
    }
    if (y) {
      long long p = ((c[1] - c[0]) << 31) + c[2] - c[0];
      if (mp.count(p)) {
        pair<int, int> p2 = mp[p];
        if (p2.first + c[0] > l) {
          ans = p2.second + (b << (2 * (n - z)));
          l = p2.first + c[0];
        }
      }
    } else {
      long long p = ((c[0] - c[1]) << 31) + c[0] - c[2];
      if (!mp.count(p) || (mp.count(p) && mp[p].first < c[0]))
        mp[p] = pair<int, int>(c[0], b);
    }
    return;
  }
  for (int i = (1); i < (4); i++) {
    b += i << (2 * z);
    f(x - 1, y, z + 1);
    b -= i << (2 * z);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (3); j++) scanf("%d", &a[j][i]);
  f(n / 2, 0, 0);
  f(n - n / 2, 1, 0);
  if (l != -(1 << 30)) {
    char c[] = "LMW";
    for (int i = (0); i < (n); i++) {
      int t = ans >> (2 * i);
      putchar(c[t & 1]);
      putchar(c[t & 2]);
      puts("");
    }
  } else
    puts("Impossible");
  return 0;
}
