#include <bits/stdc++.h>
using namespace std;
void Get(int &T) {
  char C;
  bool F = 0;
  for (; C = getchar(), C < '0' || C > '9';)
    if (C == '-') F = 1;
  for (T = C - '0'; C = getchar(), C >= '0' && C <= '9'; T = T * 10 + C - '0')
    ;
  F && (T = -T);
}
set<pair<int, pair<int, int> > > S;
map<int, int> Sum;
int N, M, K;
void Add(int i, int l, int r) {
  typeof(S.begin()) k = S.insert(make_pair(i, make_pair(l, r))).first;
  for (;;) {
    typeof(k) p = k;
    p--;
    if (p->first == i && p->second.second >= l) {
      if (l > p->second.first) l = p->second.first;
      if (r < p->second.second) r = p->second.second;
      S.erase(p);
      S.erase(k);
      k = S.insert(make_pair(i, make_pair(l, r))).first;
    } else
      break;
  }
  for (;;) {
    typeof(k) p = k;
    p++;
    if (p->first == i && p->second.first <= r) {
      if (r < p->second.second) r = p->second.second;
      S.erase(p);
      S.erase(k);
      k = S.insert(make_pair(i, make_pair(l, r))).first;
    } else
      break;
  }
}
int SG;
void Init() {
  Get(N);
  Get(M);
  Get(K);
  S.insert(make_pair(0xc0c0c0c0, make_pair(0, 0)));
  S.insert(make_pair(0x3f3f3f3f, make_pair(0, 0)));
  for (int i = 1, X1, Y1, X2, Y2; i <= K; i++) {
    Get(X1);
    Get(Y1);
    Get(X2);
    Get(Y2);
    if (X1 > X2) std::swap(X1, X2);
    if (Y1 > Y2) std::swap(Y1, Y2);
    if (X1 == X2) Add(X1, Y1, Y2);
    if (Y1 == Y2) Add(-Y1, X1, X2);
  }
  int Last = 0;
  for (typeof(S.begin()) k = S.begin(); k != S.end(); k++) {
    if (k->first >= -M && k->first <= N) {
      if (k->first != Last) {
        if (k->first > 0)
          Sum[k->first] = M;
        else
          Sum[k->first] = N;
      }
      SG ^= Sum[k->first];
      Sum[k->first] -= k->second.second - k->second.first;
      SG ^= Sum[k->first];
    }
    Last = k->first;
  }
  if ((N - 1) & 1) SG ^= M;
  if ((M - 1) & 1) SG ^= N;
}
void Find(int X, int Dlt) {
  int R = 0;
  typeof(S.begin()) k =
      S.lower_bound(make_pair(X, make_pair(0xc0c0c0c0, 0xc0c0c0c0)));
  for (;; k++) {
    if (Dlt <= k->second.first - R || k->first != X) {
      R += Dlt;
      break;
    } else {
      Dlt -= k->second.first - R;
      R = k->second.second;
    }
  }
  puts("FIRST");
  if (X > 0)
    printf("%d %d %d %d\n", X, 0, X, R);
  else
    printf("%d %d %d %d\n", 0, -X, R, -X);
  exit(0);
}
void Work() {
  if (SG == 0) return;
  if ((SG ^ M) < M) {
    int Dlt = M - (SG ^ M);
    for (int i = 1; i < N; i++) {
      if (Sum.count(i) == 0) {
        Find(i, Dlt);
      }
    }
  }
  if ((SG ^ N) < N) {
    int Dlt = N - (SG ^ N);
    for (int i = 1; i < M; i++)
      if (Sum.count(-i) == 0) {
        Find(-i, Dlt);
      }
  }
  for (typeof(Sum.begin()) k = Sum.begin(); k != Sum.end(); k++) {
    if ((SG ^ (k->second)) < (k->second)) {
      int Dlt = (k->second) - (SG ^ (k->second));
      Find(k->first, Dlt);
    }
  }
}
void Output() { puts("SECOND"); }
int main() {
  Init();
  Work();
  Output();
  return 0;
}
