#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll llinf = (1ll << 61) - 1;
using SS = stringstream;
struct Dbg {
  static constexpr ostream &os = cout;
  template <class C>
  static auto dud(C *first) -> decltype(os << *first, 0);
  template <class C>
  static char dud(...);
  template <class C>
  typename enable_if<sizeof dud<C>(0) != 1, Dbg &>::type operator<<(
      const C &first) {
    os << first;
    return *this;
  }
  template <class C>
  Dbg &dump(C b, C e) {
    *this << "\n[";
    int cur = 0;
    for (C i = b; i != e and cur < 30; i++, cur++)
      *this << ", " + 2 * (i == b) << *i;
    return *this << "]";
  }
  template <class C>
  typename enable_if<sizeof dud<C>(0) == 1, Dbg &>::type operator<<(
      const C &first) {
    return dump(begin(first), end(first));
  }
  template <class C, size_t X>
  typename enable_if<sizeof(C) != 1, Dbg &>::type operator<<(C (&first)[X]) {
    return dump(begin(first), end(first));
  }
  template <class B, class C>
  Dbg &operator<<(const pair<B, C> &first) {
    return *this << "{" << first.first << ", " << first.second << "}";
  }
  Dbg &operator<<(ostream &(*first)(std::ostream &)) {
    os << first;
    return *this;
  }
} dbg;
void err(SS *ss) { delete ss; }
template <class C, class... A>
void err(SS *ss, const C &val, const A &...args) {
  string name;
  *ss >> name;
  if (name.back() == ',') name.pop_back();
  dbg << name << " = " << val << "; ", err(ss, args...);
}
const int inf = 1000000007, mxn = 100005;
int n, m, K, T, Q, cn;
vector<pair<int, pair<int, int>>> ver, hor;
vector<pair<int, int>> piles, piles2;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.precision(11);
  cin >> n >> m >> K;
  for (auto i = 1; i <= K; i += 1) {
    int xb, xe, yb, ye;
    cin >> xb >> yb >> xe >> ye;
    if (xb > xe) swap(xb, xe);
    if (yb > ye) swap(yb, ye);
    if (yb == ye)
      ver.push_back({yb, {xb, xe}});
    else
      hor.push_back({xb, {yb, ye}});
  }
  sort(begin(ver), end(ver)), sort(begin(hor), end(hor));
  int os = m, last, prv = -1, nim = 0, hc = n - 1, vc = m - 1, pile = -inf,
      pile2 = -inf;
  for (auto &i : hor) {
    if (i.first == prv)
      os += max(0, i.second.second - max(last, i.second.first)),
          last = max(last, i.second.second);
    else {
      os = m - os, nim ^= os;
      if (prv > 0 and prv < n) piles.emplace_back(prv, os);
      if (i.first != prv + 1 and i.first > 1) pile = i.first - 1;
      hc--, os = i.second.second - i.second.first, last = i.second.second,
            prv = i.first;
    }
  }
  os = m - os, nim ^= os ^ ((hc & 1) * m);
  42;
  if (prv > 0 and prv < n) piles.emplace_back(prv, os);
  if (hc) {
    if (pile == -inf) pile = n - 1;
    piles.emplace_back(pile, m);
  }
  os = n, prv = -1;
  for (auto &i : ver) {
    if (i.first == prv)
      os += max(0, i.second.second - max(last, i.second.first)),
          last = max(last, i.second.second);
    else {
      os = n - os, nim ^= os;
      if (prv > 0 and prv < m) piles2.emplace_back(prv, os);
      if (i.first != prv + 1 and i.first > 1) pile2 = i.first - 1;
      vc--, os = i.second.second - i.second.first, last = i.second.second,
            prv = i.first;
    }
  }
  if (vc) {
    if (pile2 == -inf) pile2 = m - 1;
    piles2.emplace_back(pile2, n);
  }
  os = n - os, nim ^= os ^ ((vc & 1) * n);
  42;
  if (prv > 0 and prv < m) piles2.emplace_back(prv, os);
  if (!nim) return cout << "SECOND\n", 0;
  cout << "FIRST\n";
  42;
  for (auto &i : piles)
    if ((i.second ^ nim) < i.second) {
      int j = lower_bound(begin(hor), end(hor),
                          pair<int, pair<int, int>>(i.first, {-inf, -inf})) -
              hor.begin(),
          need = i.second - (i.second ^ nim);
      last = 0;
      for (; j < hor.size() and hor[j].first == i.first; j++) {
        need -= max(0, hor[j].second.first - last);
        42;
        if (need <= 0) {
          need += hor[j].second.first - last;
          break;
        }
        last = max(last, hor[j].second.second);
      }
      cout << i.first << ' ' << 0 << ' ' << i.first << ' ' << last + need
           << '\n',
          exit(0);
    }
  for (auto &i : piles2)
    if ((i.second ^ nim) < i.second) {
      int j = lower_bound(begin(ver), end(ver),
                          pair<int, pair<int, int>>(i.first, {-inf, -inf})) -
              ver.begin(),
          need = i.second - (i.second ^ nim);
      last = 0;
      for (; j < ver.size() and ver[j].first == i.first; j++) {
        need -= max(0, ver[j].second.first - last);
        if (need <= 0) {
          need += ver[j].second.first - last;
          break;
        }
        last = max(last, ver[j].second.second);
      }
      cout << 0 << ' ' << i.first << ' ' << last + need << ' ' << i.first
           << '\n',
          exit(0);
    }
}
