#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int Edges;
  cin >> Edges;
  vector<int> Graph[5];
  vector<int>::iterator It, iter, T;
  for (int i = 0; i < Edges; i++) {
    int node_01, node_02;
    cin >> node_01 >> node_02;
    Graph[(node_01 - 1)].push_back(node_02 - 1);
    Graph[(node_02 - 1)].push_back(node_01 - 1);
  }
  bool found_adj_01 = false, found_adj_02 = false;
  for (int a = 0; a < 5; a++) {
    if (Graph[a].size() >= 2) {
      for (It = Graph[a].begin(); It != Graph[a].end(); It++) {
        for (iter = Graph[*It].begin(); iter != Graph[*It].end(); iter++) {
          for (T = Graph[a].begin(); T != Graph[a].end(); T++) {
            if (*T == *iter) {
              found_adj_01 = true;
              cout << "WIN"
                   << "\n";
              return 0;
            }
          }
        }
      }
    }
  }
  if (found_adj_01 == false) {
    for (int b = 0; b < 5; b++) {
      if (Graph[b].size() <= 2) {
        bool adj[5];
        for (int x = 0; x < 5; x++) {
          adj[x] = false;
        }
        for (It = Graph[b].begin(); It != Graph[b].end(); It++) {
          adj[*It] = true;
        }
        for (int y = 0; y < 5; y++) {
          if (adj[y] == false && y != b) {
            for (int z = 0; z < 5; z++) {
              if (z != y && z != b && adj[z] == false) {
                for (iter = Graph[z].begin(); iter != Graph[z].end(); iter++) {
                  if (*iter == y) {
                    found_adj_02 = true;
                    break;
                  }
                }
                if (found_adj_02 == false) {
                  cout << "WIN"
                       << "\n";
                  return 0;
                }
                found_adj_02 = false;
              }
            }
          }
        }
      }
    }
  }
  cout << "FAIL"
       << "\n";
  return 0;
}
