#include <bits/stdc++.h>
using namespace std;
map<int, vector<pair<int, int> > > V, H;
map<int, int> CV, CH;
int main(int argc, char *argv[]) {
  int N, M, K;
  cin >> N >> M >> K;
  for (int i = 0; i < K; ++i) {
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    if (a == c)
      V[a].push_back(pair<int, int>(min(b, d), max(b, d)));
    else
      H[b].push_back(pair<int, int>(min(a, c), max(a, c)));
  }
  int XOR = 0;
  int neV = 0;
  for (map<int, vector<pair<int, int> > >::iterator it = V.begin();
       it != V.end(); ++it) {
    vector<pair<int, int> > &T = it->second;
    if (it->first == 0 || it->first == N) {
      neV++;
      continue;
    }
    sort(T.begin(), T.end());
    int cnt = 0;
    int la = -1;
    for (int i = 0; i < T.size(); ++i) {
      if (la == -1 || la < T[i].first)
        cnt += T[i].second - T[i].first;
      else if (T[i].second > la)
        cnt += T[i].second - la;
      la = max(la, T[i].second);
    }
    CV[it->first] = M - cnt;
    XOR ^= M - cnt;
  }
  int neH = 0;
  for (map<int, vector<pair<int, int> > >::iterator it = H.begin();
       it != H.end(); ++it) {
    vector<pair<int, int> > &T = it->second;
    if (it->first == 0 || it->first == M) {
      neH++;
      continue;
    }
    sort(T.begin(), T.end());
    int cnt = 0;
    int la = -1;
    for (int i = 0; i < T.size(); ++i) {
      if (la == -1 || la < T[i].first)
        cnt += T[i].second - T[i].first;
      else if (T[i].second > la)
        cnt += T[i].second - la;
      la = max(la, T[i].second);
    }
    CH[it->first] = N - cnt;
    XOR ^= N - cnt;
  }
  if ((N - 1 - V.size() + neV) & 1) XOR ^= M;
  if ((M - 1 - H.size() + neH) & 1) XOR ^= N;
  cout << (XOR != 0 ? "FIRST" : "SECOND") << endl;
  if (XOR != 0) {
    for (map<int, vector<pair<int, int> > >::iterator it = V.begin();
         it != V.end(); ++it) {
      if ((CV[it->first] ^ XOR) >= CV[it->first]) continue;
      XOR = CV[it->first] - (CV[it->first] ^ XOR);
      vector<pair<int, int> > &T = it->second;
      sort(T.begin(), T.end());
      int cnt = 0;
      int la = -1, p = -1;
      for (int i = 0; i < T.size(); ++i) {
        if (la == -1) {
          cnt += T[i].first;
          p = T[i].first;
        } else if (la < T[i].first) {
          cnt += T[i].first - la;
          p = T[i].first;
        }
        la = max(la, T[i].second);
        if (cnt >= XOR) {
          cout << it->first << " " << 0 << " " << it->first << " "
               << p - (cnt - XOR) << endl;
          return 0;
        }
      }
      {
        int en = M;
        if (la == -1) {
          cnt += en;
          p = en;
        } else if (la < en) {
          cnt += en - la;
          p = en;
        }
        la = max(la, en);
        if (cnt >= XOR) {
          cout << it->first << " " << 0 << " " << it->first << " "
               << p - (cnt - XOR) << endl;
          return 0;
        }
      }
    }
    for (map<int, vector<pair<int, int> > >::iterator it = H.begin();
         it != H.end(); ++it) {
      if ((CH[it->first] ^ XOR) >= CH[it->first]) continue;
      XOR = CH[it->first] - (CH[it->first] ^ XOR);
      vector<pair<int, int> > &T = it->second;
      sort(T.begin(), T.end());
      int cnt = 0;
      int la = -1, p = -1;
      for (int i = 0; i < T.size(); ++i) {
        if (la == -1) {
          cnt += T[i].first;
          p = T[i].first;
        } else if (la < T[i].first) {
          cnt += T[i].first - la;
          p = T[i].first;
        }
        la = max(la, T[i].second);
        if (cnt >= XOR) {
          cout << 0 << " " << it->first << " " << p - (cnt - XOR) << " "
               << it->first << endl;
          return 0;
        }
      }
      {
        int en = N;
        if (la == -1) {
          cnt += en;
          p = en;
        } else if (la < en) {
          cnt += en - la;
          p = en;
        }
        la = max(la, en);
        if (cnt >= XOR) {
          cout << 0 << " " << it->first << " " << p - (cnt - XOR) << " "
               << it->first << endl;
          return 0;
        }
      }
    }
    if ((XOR ^ M) < M && (N - 1 - V.size() + neV) > 0) {
      XOR = M - (XOR ^ M);
      for (int i = 1; i <= N; ++i) {
        if (V.count(i) == 0) {
          cout << i << " " << 0 << " " << i << " " << XOR << endl;
          return 0;
        }
      }
    }
    if ((XOR ^ N) < N && (M - 1 - H.size() + neH) > 0) {
      XOR = N - (XOR ^ N);
      for (int i = 1; i <= M; ++i) {
        if (H.count(i) == 0) {
          cout << 0 << " " << i << " " << XOR << " " << i << endl;
          return 0;
        }
      }
    }
  }
}
