#include <bits/stdc++.h>
using namespace std;
int n, k, a = 0, b = 0, c = 0;
map<pair<int, int>, long long> mxa, vst;
int izm[30][5];
void rec1(int p, long long d) {
  if (p == k) {
    if (!vst.count(make_pair(a - b, b - c)) ||
        a > mxa[make_pair(a - b, b - c)]) {
      mxa[make_pair(a - b, b - c)] = a;
      vst[make_pair(a - b, b - c)] = d;
    }
    return;
  }
  a += izm[p][0], b += izm[p][1];
  rec1(p + 1, d * 10 + 1);
  b -= izm[p][1], c += izm[p][2];
  rec1(p + 1, d * 10 + 2);
  a -= izm[p][0], b += izm[p][1];
  rec1(p + 1, d * 10 + 3);
  b -= izm[p][1];
  c -= izm[p][2];
}
bool gh = 0;
long long rez1, rez2, mx;
void rec2(int p, long long d) {
  if (p == n) {
    if (vst.count(make_pair(b - a, c - b))) {
      if (!gh || mx < mxa[make_pair(b - a, c - b)] + a) {
        mx = mxa[make_pair(b - a, c - b)] + a;
        rez1 = vst[make_pair(b - a, c - b)];
        rez2 = d;
      }
      gh = 1;
    }
    return;
  }
  a += izm[p][0], b += izm[p][1];
  rec2(p + 1, d * 10 + 1);
  b -= izm[p][1], c += izm[p][2];
  rec2(p + 1, d * 10 + 2);
  a -= izm[p][0], b += izm[p][1];
  rec2(p + 1, d * 10 + 3);
  b -= izm[p][1];
  c -= izm[p][2];
}
string ser(int a) {
  if (a == 1) return "LM";
  if (a == 2) return "LW";
  if (a == 3) return "MW";
}
int main() {
  cin >> n;
  k = n / 2;
  for (int i = 0; i <= n - 1; i++)
    for (int j = 0; j <= 2; j++) cin >> izm[i][j];
  rec1(0, 0);
  a = 0, b = 0, c = 0;
  rec2(k, 0);
  if (!gh) return cout << "Impossible", 0;
  stack<int> rt;
  while (rez2) {
    rt.push(rez2 % 10);
    rez2 /= 10;
  }
  while (rez1) {
    rt.push(rez1 % 10);
    rez1 /= 10;
  }
  while (!rt.empty()) {
    cout << ser(rt.top()) << endl;
    rt.pop();
  }
  return 0;
}
