#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e5;
int n, m, k, ans;
pair<pair<int, int>, pair<int, int> > st;
vector<pair<pair<int, int>, pair<int, int> > > forn, form;
int len(pair<pair<int, int>, pair<int, int> > v) {
  return (abs(v.first.first - v.second.first) +
          abs(v.first.second - v.second.second));
}
void solve(int n, int m,
           const vector<pair<pair<int, int>, pair<int, int> > >& f) {
  int last = 0;
  for (int l = 0, r = 0; l < (int)(f).size(); l = r) {
    if ((f[l].first.first - last - 1) % 2) ans ^= m;
    while (r < (int)(f).size() && f[r].first.first == f[l].first.first) r++;
    int d = 0, bound = 0;
    for (int i = l; i < r; i++) {
      if (f[i].first.second >= bound)
        d += len(f[i]);
      else
        d += max(0, f[i].second.second - bound);
      bound = max(bound, f[i].second.second);
    }
    ans ^= (m - d);
    last = f[l].first.first;
  }
  if ((n - 1 - last) % 2) {
    ans ^= m;
  }
}
int Try(int need, int have) {
  need ^= have;
  return have - need;
}
bool findAns(int n, int m,
             const vector<pair<pair<int, int>, pair<int, int> > >& f, int val) {
  int last = 0;
  for (int l = 0, r = 0; l < (int)(f).size(); l = r) {
    if (f[l].first.first - last - 1) {
      int v = Try(val, m);
      if (v >= 1 && v <= m) {
        st = make_pair(make_pair(last + 1, 0), make_pair(last + 1, v));
        return true;
      }
    }
    while (r < (int)(f).size() && f[r].first.first == f[l].first.first) r++;
    int d = 0, bound = 0;
    for (int i = l; i < r; i++) {
      if (f[i].first.second >= bound)
        d += len(f[i]);
      else
        d += max(0, f[i].second.second - bound);
      bound = max(bound, f[i].second.second);
    }
    int v = Try(val, m - d);
    if (v >= 1 && v <= m - d) {
      int free = 0, bound = 0;
      for (int i = l; i < r; i++) {
        if (f[i].first.second >= bound) {
          if (free + f[i].first.second - bound >= v) {
            st = make_pair(make_pair(f[i].first.first, 0),
                           make_pair(f[i].first.first, bound + v - free));
            return true;
          }
          free += f[i].first.second - bound;
        }
        bound = max(bound, f[i].second.second);
      }
      st = make_pair(make_pair(f[l].first.first, 0),
                     make_pair(f[l].first.first, bound + v - free));
      return true;
    }
    last = f[l].first.first;
  }
  if (n - 1 - last) {
    int v = Try(val, m);
    if (v >= 1 && v <= m) {
      st = make_pair(make_pair(n - 1, 0), make_pair(n - 1, v));
      return true;
    }
  }
  return false;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < k; i++) {
    int x1, y1, x2, y2;
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    if (x1 == x2)
      forn.push_back(
          make_pair(make_pair(x1, min(y1, y2)), make_pair(x1, max(y1, y2))));
    else
      form.push_back(
          make_pair(make_pair(y1, min(x1, x2)), make_pair(y1, max(x1, x2))));
  }
  sort(forn.begin(), forn.end());
  sort(form.begin(), form.end());
  solve(n, m, forn);
  solve(m, n, form);
  cerr << ans << endl;
  if (ans) {
    cout << "FIRST" << endl;
    if (findAns(n, m, forn, ans))
      cout << st.first.first << ' ' << st.first.second << ' ' << st.second.first
           << ' ' << st.second.second << endl,
          cerr << "find with n" << endl;
    else if (findAns(m, n, form, ans))
      cout << st.first.second << ' ' << st.first.first << ' '
           << st.second.second << ' ' << st.second.first << endl,
          cerr << "find with m" << endl;
    else
      assert(0);
  } else
    cout << "SECOND" << endl;
  return 0;
}
