#include <bits/stdc++.h>
using namespace std;
inline void pisz(int n) { printf("%d\n", n); }
template <typename T, typename TT>
ostream &operator<<(ostream &s, pair<T, TT> t) {
  return s << "(" << t.first << "," << t.second << ")";
}
template <typename T>
ostream &operator<<(ostream &s, vector<T> t) {
  for (int(i) = 0; (i) < (((int)((t).size()))); ++(i)) s << t[i] << " ";
  return s;
}
int main() {
  int(n), (m), (k);
  scanf("%d %d %d", &(n), &(m), &(k));
  map<int, vector<pair<int, int> > > segments[2];
  for (int(i) = 0; (i) < (k); ++(i)) {
    int(xbi), (ybi);
    scanf("%d %d", &(xbi), &(ybi));
    int(xei), (yei);
    scanf("%d %d", &(xei), &(yei));
    if (xbi > xei) swap(xbi, xei);
    if (ybi > yei) swap(ybi, yei);
    if (xbi == xei) {
      segments[0][xbi].push_back(make_pair(ybi, 1));
      segments[0][xbi].push_back(make_pair(yei, -1));
    } else {
      segments[1][ybi].push_back(make_pair(xbi, 1));
      segments[1][ybi].push_back(make_pair(xei, -1));
    }
  }
  int dim[2] = {n, m}, xo = 0;
  vector<pair<pair<int, int>, int> > cands;
  for (int(u) = 0; (u) < (2); ++(u)) {
    for (typeof(segments[u].begin()) it = segments[u].begin();
         it != segments[u].end(); it++) {
      int x = it->first;
      vector<pair<int, int> > &v = it->second;
      sort(v.begin(), v.end());
      v.push_back(make_pair(dim[1 - u], 1));
      int lev = 0, prev = 0, len = 0;
      for (typeof(v.begin()) jt = v.begin(); jt != v.end(); jt++) {
        if (lev == 0) len += jt->first - prev;
        prev = jt->first;
        lev += jt->second;
      }
      cands.push_back(make_pair(make_pair(u, x), len));
      xo ^= len;
    }
    int rest = dim[u] - 1 - ((int)((segments[u]).size()));
    if (1 & rest) {
      xo ^= dim[1 - u];
    }
    if (rest > 0) {
      cands.push_back(make_pair(make_pair(u, -1), dim[1 - u]));
    }
  }
  if (xo == 0) {
    printf("SECOND");
  } else {
    printf("FIRST\n");
    pair<int, int> bestind;
    int reduction;
    for (typeof(cands.begin()) it = cands.begin(); it != cands.end(); it++) {
      int ai = it->second;
      if ((ai ^ xo) < ai) {
        bestind = it->first;
        reduction = ai - (ai ^ xo);
        break;
      }
    }
    int u = bestind.first;
    if (bestind.second == -1) {
      int cur = 1;
      bool broken = 0;
      for (typeof(segments[u].begin()) it = segments[u].begin();
           it != segments[u].end(); it++) {
        if (it->first != cur) {
          bestind.second = cur;
          broken = 1;
          break;
        } else {
          ++cur;
        }
      }
      if (!broken) bestind.second = cur;
    }
    int x = bestind.second;
    vector<pair<int, int> > &v = segments[u][x];
    v.push_back(make_pair(dim[1 - u], 1));
    int lev = 0, prev = 0, len = 0;
    for (typeof(v.begin()) jt = v.begin(); jt != v.end(); jt++) {
      if (lev == 0) {
        len += jt->first - prev;
        if (len >= reduction) {
          int pos = jt->first - (len - reduction);
          if (u == 0) {
            printf("%d %d %d %d", x, 0, x, pos);
          } else {
            printf("%d %d %d %d", 0, x, pos, x);
          }
          return 0;
        }
      }
      prev = jt->first;
      lev += jt->second;
    }
  }
}
