#include <bits/stdc++.h>
using namespace std;
map<long long int, long long int> m;
map<long long int, vector<pair<long long int, long long int> > > xcuts;
map<long long int, vector<pair<long long int, long long int> > > ycuts;
map<long long int, long long int> x;
map<long long int, long long int> y;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int a, b, k;
  cin >> a >> b >> k;
  long long int xa, xb, ya, yb;
  for (long long int i = 0; i < k; i++) {
    cin >> xa >> ya >> xb >> yb;
    if (xa == xb)
      xcuts[xa].push_back({min(ya, yb), max(ya, yb)});
    else
      ycuts[ya].push_back({min(xa, xb), max(xa, xb)});
  }
  m[a] += b - 1;
  m[b] += a - 1;
  for (auto j : xcuts) {
    sort(j.second.begin(), j.second.end());
    long long int s = 0, e = 0;
    long long int val = 0;
    for (auto i : j.second) {
      if (i.first > e) {
        val += (e - s);
        s = i.first;
      }
      if (i.second > e) {
        e = i.second;
      }
    }
    val += (e - s);
    m[b]--;
    m[b - val]++;
    x[b - val] = j.first;
  }
  for (auto j : ycuts) {
    sort(j.second.begin(), j.second.end());
    long long int s = 0, e = 0;
    long long int val = 0;
    for (auto i : j.second) {
      if (i.first > e) {
        val += (e - s);
        s = i.first;
      }
      if (i.second > e) {
        e = i.second;
      }
    }
    val += (e - s);
    m[a]--;
    m[a - val]++;
    y[a - val] = j.first;
  }
  for (long long int i = 1; i < min(a, (long long int)100009); i++) {
    if (xcuts[i].size() == 0) {
      x[b] = i;
      break;
    }
  }
  for (long long int i = 1; i < min(b, (long long int)100009); i++) {
    if (ycuts[i].size() == 0) {
      y[a] = i;
      break;
    }
  }
  long long int nim = 0;
  for (auto i : m) {
    if (i.second % 2 == 1) nim ^= i.first;
  }
  if (nim == 0)
    cout << "SECOND";
  else {
    cout << "FIRST" << '\n';
    for (auto i : x) {
      if ((nim ^ i.first) < i.first) {
        long long int z = 0, s = 0, e = 0;
        long long int xc = i.second;
        long long int req = i.first - (nim ^ i.first);
        sort(xcuts[xc].begin(), xcuts[xc].end());
        for (auto j : xcuts[xc]) {
          if (j.first > e) {
            s = j.first;
            if ((z + s - e) >= req) break;
            z += (s - e);
          }
          if (j.second > e) e = j.second;
        }
        cout << xc << ' ' << 0 << ' ' << xc << ' ' << (e + req - z);
        return 0;
      }
    }
    for (auto i : y) {
      if ((nim ^ i.first) < i.first) {
        long long int z = 0, s = 0, e = 0;
        long long int yc = i.second;
        long long int req = i.first - (nim ^ i.first);
        sort(ycuts[yc].begin(), ycuts[yc].end());
        for (auto j : ycuts[yc]) {
          if (j.first > e) {
            s = j.first;
            if ((z + s - e) >= req) break;
            z += (s - e);
          }
          if (j.second > e) e = j.second;
        }
        cout << 0 << ' ' << yc << ' ' << (e + req - z) << ' ' << yc;
        return 0;
      }
    }
  }
}
