#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int nn, mm;
typedef struct {
  int x, s, e;
} ele;
int cmp(ele a, ele b) { return a.x < b.x || (a.x == b.x && a.s < b.s); }
vector<ele> a[2];
template <class T>
int dcdc(T s, T e, int x) {
  ele l = *s;
  s++;
  for (; s != e; s++) {
    if (l.e >= s->s) {
      l.e = max(l.e, s->e);
    } else {
      x -= l.e - l.s;
      l = *s;
    }
  }
  return x - (l.e - l.s);
}
template <class T>
void dcdc2(T s, T e, int x, int m, int t) {
  ele l = (ele){s->x, 0, 0};
  int ts = 0;
  for (; s != e; s++) {
    if (l.e >= s->s) {
      l.e = max(l.e, s->e);
    } else {
      ts += s->s - l.e;
      if (ts >= x) {
        if (t == 0)
          printf("%d %d %d %d\n", l.x, 0, l.x, s->s - (ts - x));
        else
          printf("%d %d %d %d\n", 0, l.x, s->s - (ts - x), l.x);
        return;
      }
      l = *s;
    }
  }
  ts += m - l.e;
  if (t == 0)
    printf("%d %d %d %d\n", l.x, 0, l.x, m - (ts - x));
  else
    printf("%d %d %d %d\n", 0, l.x, m - (ts - x), l.x);
}
int test(int t, int tox, int m) {
  int tn = (int)a[t].size();
  for (int i = 0; i < tn;) {
    int j = i;
    for (; i < tn && a[t][i].x == a[t][j].x; i++)
      ;
    int tt = dcdc(a[t].begin() + j, a[t].begin() + i, m);
    if (tt > (tox ^ tt)) {
      dcdc2(a[t].begin() + j, a[t].begin() + i, tt - (tox ^ tt), m, t);
      return 1;
    }
  }
  return 0;
}
void sol() {
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 0; i < k; i++) {
    int x, y, z, w;
    scanf("%d %d %d %d", &x, &y, &z, &w);
    if (x == z) {
      if (y > w) swap(y, w);
      a[0].push_back((ele){x, y, w});
    } else {
      if (x > z) swap(x, z);
      a[1].push_back((ele){y, x, z});
    }
  }
  nn = n - 1;
  mm = m - 1;
  int txo = ((nn & 1) * m) ^ ((mm & 1) * n);
  for (int t = 0; t < 2; t++) {
    sort(a[t].begin(), a[t].end(), cmp);
    int tn = (int)a[t].size();
    for (int i = 0; i < tn;) {
      int j = i;
      for (; i < tn && a[t][i].x == a[t][j].x; i++)
        ;
      txo ^= m;
      nn--;
      txo ^= dcdc(a[t].begin() + j, a[t].begin() + i, m);
    }
    swap(n, m);
    swap(nn, mm);
  }
  if (txo == 0) {
    puts("SECOND");
  } else {
    puts("FIRST");
    if (nn && m > (txo ^ m)) {
      int tn = (int)a[0].size();
      int ta = 1;
      for (int i = 0; i < tn; i++) {
        if (ta == a[0][i].x) ta++;
      }
      printf("%d %d %d %d\n", ta, 0, ta, m - (txo ^ m));
    } else if (mm && n > (txo ^ n)) {
      int tn = (int)a[1].size();
      int ta = 1;
      for (int i = 0; i < tn; i++) {
        if (ta == a[1][i].x) ta++;
      }
      printf("%d %d %d %d\n", 0, ta, n - (txo ^ n), ta);
    } else {
      if (test(0, txo, m) == 0) test(1, txo, n);
    }
  }
  a[0].clear();
  a[1].clear();
}
int main() {
  while (1) {
    sol();
    break;
  }
  return 0;
}
