#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline string tostr(const T &x) {
  stringstream ss;
  ss << x;
  return ss.str();
}
const double EPS = 1e-10;
const int INF = 1000 * 1000 * 1000;
const long long LINF = INF * 1ll * INF;
const double PI = 3.1415926535897932384626433832795;
long long sign(int a) {
  if (a < 0) return -1;
  if (a > 0) return 1;
  return 0;
}
struct line {
  int x0, asdy0, x2, y2;
  vector<pair<int, int> > evs;
  vector<pair<int, int> > pos;
  int cnt;
  int len;
  void add(int a, int b) {
    evs.push_back(make_pair(a, -1));
    evs.push_back(make_pair(b, 1));
  }
  void process() {
    len = abs(x2 - x0) + abs(y2 - asdy0);
    sort((evs).begin(), (evs).end());
    int d = 0;
    int p = 0;
    cnt = 0;
    for (int i = 0; i < (((int)(evs).size())); ++i) {
      int x = evs[i].first;
      if (!d && x > p) {
        pos.push_back(make_pair(p, x));
        cnt += x - p;
      }
      d += evs[i].second;
      if (!d) p = x;
    }
    if (p < len) {
      pos.push_back(make_pair(p, len));
      cnt += len - p;
    }
  }
  void print_cut(int s) {
    int i = 0;
    while (pos[i].second - pos[i].first < s) {
      s -= pos[i].second - pos[i].first;
      ++i;
    }
    int p = pos[i].first + s;
    cout << x0 << ' ' << asdy0 << ' ' << x0 + p * sign(x2 - x0) << ' '
         << asdy0 + p * sign(y2 - asdy0) << '\n';
  }
};
line ls[210000];
int lc;
map<int, int> rows;
map<int, int> cols;
int W, H;
line &get_row(int a) {
  if (rows.count(a)) return ls[rows[a]];
  line &res = ls[lc++];
  res.x0 = 0;
  res.x2 = W;
  res.asdy0 = res.y2 = a;
  rows[a] = lc - 1;
  return res;
}
line &get_col(int a) {
  if (cols.count(a)) return ls[cols[a]];
  line &res = ls[lc++];
  res.asdy0 = 0;
  res.y2 = H;
  res.x0 = res.x2 = a;
  cols[a] = lc - 1;
  return res;
}
int main() {
  int k;
  cin >> W >> H >> k;
  for (int i = 0; i < (k); ++i) {
    int x0, x2, asdy0, y2;
    scanf("%d%d%d%d", &x0, &asdy0, &x2, &y2);
    if (x2 < x0) swap(x0, x2);
    if (y2 < asdy0) swap(asdy0, y2);
    if (x0 == x2)
      get_col(x0).add(asdy0, y2);
    else
      get_row(asdy0).add(x0, x2);
  }
  int q = 0;
  for (int i = 1; i < W; ++i) {
    if (q >= 2 && (W - 1 - ((int)(cols).size())) % 2 == 0) break;
    if (cols.count(i)) continue;
    get_col(i);
    ++q;
  }
  q = 0;
  for (int i = 1; i < H; ++i) {
    if (q >= 2 && (H - 1 - ((int)(rows).size())) % 2 == 0) break;
    if (rows.count(i)) continue;
    get_row(i);
    ++q;
  }
  int x = 0;
  for (int i = 0; i < (lc); ++i) {
    ls[i].process();
    x ^= ls[i].cnt;
  }
  if (!x) {
    cout << "SECOND";
    return 0;
  }
  cout << "FIRST\n";
  for (int i = 0; i < (lc); ++i) {
    int y = x ^ ls[i].cnt;
    if (y < ls[i].cnt) {
      ls[i].print_cut(ls[i].cnt - y);
      return 0;
    }
  }
  exit(123);
  return 0;
}
