#include <bits/stdc++.h>
using namespace std;
map<long long, vector<pair<long long, long long> > > row, col;
map<long long, long long> rr, cc;
bool INSECT(long long x1, long long y1, long long x2, long long y2) {
  return x1 <= x2 && x2 <= y1 || x1 <= y2 && y2 <= y1 || x2 <= x1 && x1 <= y2 ||
         x2 <= y1 && y1 <= y2;
}
long long SEG(vector<pair<long long, long long> > &x) {
  long long a(x[0].first), b(x[0].second), tot(0);
  vector<pair<long long, long long> > tmp;
  for (long long i = 0; i < x.size(); ++i) {
    if (INSECT(a, b, x[i].first, x[i].second)) {
      a = min(a, x[i].first), b = max(b, x[i].second);
    } else {
      tmp.push_back(make_pair((a), (b)));
      tot += b - a;
      a = x[i].first, b = x[i].second;
    }
  }
  tmp.push_back(make_pair((a), (b)));
  tot += b - a;
  x.swap(tmp);
  return tot;
}
void UNIQ(map<long long, vector<pair<long long, long long> > > &xx,
          map<long long, long long> &yy, const long long n) {
  for (map<long long, vector<pair<long long, long long> > >::iterator it =
           xx.begin();
       it != xx.end(); ++it) {
    sort(it->second.begin(), it->second.end());
    it->second.erase(unique(it->second.begin(), it->second.end()),
                     it->second.end());
    yy[it->first] = n - SEG(it->second);
  }
}
void GAO(bool foo, map<long long, vector<pair<long long, long long> > > xx,
         const long long n, long long i, long long j) {
  long long st(0), ed, sum(0);
  vector<pair<long long, long long> > tmp(xx[i]);
  if (tmp.empty()) {
    ed = j;
  } else {
    tmp.push_back(make_pair((0), (0)));
    tmp.push_back(make_pair((n), (n)));
    sort(tmp.begin(), tmp.end());
    for (long long k = 0; k + 1 < tmp.size(); ++k) {
      if (sum + tmp[k + 1].first - tmp[k].second >= j) {
        ed = tmp[k].second + j - sum;
        break;
      } else {
        sum += tmp[k + 1].first - tmp[k].second;
      }
    }
  }
  if (foo)
    cout << st << ' ' << i << ' ' << ed << ' ' << i << endl;
  else
    cout << i << ' ' << st << ' ' << i << ' ' << ed << endl;
}
int main() {
  long long i, j, k;
  long long m, n;
  long long xb, yb, xe, ye;
  long long tot(0);
  cin >> n >> m >> k;
  for (i = 0; i < k; ++i) {
    cin >> xb >> yb >> xe >> ye;
    if (xb == xe)
      col[xb].push_back(make_pair((min(yb, ye)), (max(yb, ye))));
    else
      row[yb].push_back(make_pair((min(xb, xe)), (max(xb, xe))));
  }
  UNIQ(row, rr, n);
  UNIQ(col, cc, m);
  for (map<long long, long long>::iterator it = rr.begin(); it != rr.end();
       ++it)
    tot ^= it->second;
  if ((m - 1 - rr.size()) & 1) tot ^= n;
  for (map<long long, long long>::iterator it = cc.begin(); it != cc.end();
       ++it)
    tot ^= it->second;
  if ((n - 1 - cc.size()) & 1) tot ^= m;
  if (tot == 0) {
    puts("SECOND");
  } else {
    puts("FIRST");
    i = -1, j = -1;
    for (map<long long, long long>::iterator it = rr.begin(); it != rr.end();
         ++it)
      if ((it->second ^ tot) < it->second) {
        i = it->first, j = it->second - (it->second ^ tot);
        break;
      }
    if (i == -1 && (n ^ tot) < n) {
      for (k = 1; k < m; ++k)
        if (!rr.count(k)) {
          i = k, j = n - (n ^ tot);
          break;
        }
    }
    if (i != -1)
      GAO(true, row, n, i, j);
    else {
      for (map<long long, long long>::iterator it = cc.begin(); it != cc.end();
           ++it)
        if ((it->second ^ tot) < it->second) {
          i = it->first, j = it->second - (it->second ^ tot);
          break;
        }
      if (i == -1 && (m ^ tot) < m) {
        for (k = 1; k < n; ++k)
          if (!cc.count(k)) {
            i = k, j = m - (m ^ tot);
            break;
          }
      }
      GAO(false, col, m, i, j);
    }
  }
  return 0;
}
