#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
struct Line {
  int l, r;
  Line(int l = 0, int r = 0) : l(l), r(r) {}
};
bool cmp(Line a, Line b) {
  if (a.l == b.l) return a.r < b.r;
  return a.l < b.l;
}
const int N = 100004;
vector<Line> fs[N], sc[N];
int take[N];
int n, m, k, id;
map<int, int> row, cow;
void init() {
  memset(fs, 0, sizeof(fs));
  memset(sc, 0, sizeof(sc));
  memset(take, 0, sizeof(take));
  row.clear();
  cow.clear();
  id = 0;
  for (int i = 0, x1, x2, y1, y2; i < k; ++i) {
    scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
    if (x1 == x2) {
      if (y1 > y2) swap(y1, y2);
      if (cow.find(x1) == cow.end()) {
        cow[x1] = id;
        fs[id].push_back(Line(y1, y2));
        ++id;
      } else {
        fs[cow[x1]].push_back(Line(y1, y2));
      }
    } else {
      if (x1 > x2) swap(x1, x2);
      if (row.find(y1) == row.end()) {
        row[y1] = id;
        fs[id].push_back(Line(x1, x2));
        ++id;
      } else {
        fs[row[y1]].push_back(Line(x1, x2));
      }
    }
  }
  for (int i = 0; i < id; ++i) {
    sort(fs[i].begin(), fs[i].end(), cmp);
    int l = fs[i][0].l, r = fs[i][0].r;
    for (int j = 1; j < fs[i].size(); ++j) {
      if (fs[i][j].l > r) {
        sc[i].push_back(Line(l, r));
        take[i] += r - l;
        l = fs[i][j].l;
        r = fs[i][j].r;
      } else {
        r = max(r, fs[i][j].r);
      }
    }
    take[i] += r - l;
    sc[i].push_back(Line(l, r));
  }
}
void solve() {
  int s = 0, r = m - row.size() - 1, c = n - cow.size() - 1;
  if (r & 1) s ^= n;
  if (c & 1) s ^= m;
  for (map<int, int>::iterator it = row.begin(); it != row.end(); ++it) {
    int rest = n - take[it->second];
    s ^= rest;
  }
  for (map<int, int>::iterator it = cow.begin(); it != cow.end(); ++it) {
    int rest = m - take[it->second];
    s ^= rest;
  }
  if (s == 0) {
    puts("SECOND");
    return;
  }
  puts("FIRST");
  for (int i = 1; i < n; ++i) {
    if (cow.find(i) == cow.end()) {
      if (m >= (m ^ s)) {
        int t = m - (m ^ s);
        printf("%d %d %d %d\n", i, 0, i, t);
        return;
      } else
        break;
    }
  }
  for (int i = 1; i < m; ++i) {
    if (row.find(i) == row.end()) {
      if (n >= (n ^ s)) {
        int t = n - (n ^ s);
        printf("%d %d %d %d\n", 0, i, t, i);
        return;
      } else
        break;
    }
  }
  for (map<int, int>::iterator it = row.begin(); it != row.end(); ++it) {
    int id = it->second, rest = n - take[id];
    if (rest >= (rest ^ s)) {
      int t = rest - (rest ^ s);
      int sum = 0, p = 0;
      sc[id].push_back(Line(n, n));
      for (int i = 0; i < sc[id].size(); ++i) {
        if (sum + sc[id][i].l - p >= t) {
          printf("%d %d %d %d\n", 0, it->first, p + t - sum, it->first);
          return;
        }
        sum += sc[id][i].l - p;
        p = sc[id][i].r;
      }
    }
  }
  for (map<int, int>::iterator it = cow.begin(); it != cow.end(); ++it) {
    int id = it->second, rest = m - take[id];
    if (rest >= (rest ^ s)) {
      int t = rest - (rest ^ s);
      int sum = 0, p = 0;
      sc[id].push_back(Line(m, m));
      for (int i = 0; i < sc[id].size(); ++i) {
        if (sum + sc[id][i].l - p >= t) {
          printf("%d %d %d %d\n", it->first, 0, it->first, p + t - sum);
          return;
        }
        sum += sc[id][i].l - p;
        p = sc[id][i].r;
      }
    }
  }
}
int main() {
  while (cin >> n >> m >> k) {
    init();
    solve();
  }
  return 0;
}
