#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 2 * 100 * 1000 + 10;
const int INF = 1000 * 1000 * 1000 + 10;
int N, M, K;
map<int, vector<pair<int, int> > > Mx, My;
vector<pair<int, int> > X, Y;
bool mrk[MAX_N];
int Solve(const vector<pair<int, int> > &V) {
  int RET = 0, CNT = 0;
  int PRV = 0;
  for (int i = 0; i < (int)V.size() + 5; i++) mrk[i] = false;
  vector<pair<int, int> > Temp;
  for (int i = 0; i < (int)V.size(); i++)
    Temp.push_back(pair<int, int>(V[i].first, i)),
        Temp.push_back(pair<int, int>(V[i].second, i));
  sort(Temp.begin(), Temp.end());
  for (int i = 0; i < (int)Temp.size(); i++) {
    int x = Temp[i].first, id = Temp[i].second;
    if (!mrk[id]) {
      mrk[id] = true;
      CNT++;
      if (CNT == 1) PRV = x;
    } else {
      mrk[id] = false;
      CNT--;
      if (CNT == 0) RET += x - PRV;
    }
  }
  return RET;
}
pair<int, int> Move(const vector<pair<int, int> > &V, int len) {
  int RET = 0, CNT = 0;
  int PRV = 0;
  for (int i = 0; i < (int)V.size() + 5; i++) mrk[i] = false;
  vector<pair<int, int> > Temp;
  for (int i = 0; i < (int)V.size(); i++)
    Temp.push_back(pair<int, int>(V[i].first, i)),
        Temp.push_back(pair<int, int>(V[i].second, i));
  Temp.push_back(pair<int, int>(INF, (int)V.size() + 1));
  sort(Temp.begin(), Temp.end());
  for (int i = 0; i < (int)Temp.size(); i++) {
    int x = Temp[i].first, id = Temp[i].second;
    if (!mrk[id]) {
      mrk[id] = true;
      CNT++;
      if (CNT == 1) RET += x - PRV;
      if (RET >= len) return pair<int, int>(0, x - (RET - len));
    } else {
      mrk[id] = false;
      CNT--;
      if (CNT == 0) PRV = x;
    }
  }
  return pair<int, int>(0, 0);
}
int main() {
  ios::sync_with_stdio(false);
  cin >> N >> M >> K;
  for (int i = 0; i < K; i++) {
    int x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    if (x1 == x2)
      Mx[x1].push_back(pair<int, int>(min(y1, y2), max(y1, y2)));
    else
      My[y1].push_back(pair<int, int>(min(x1, x2), max(x1, x2)));
  }
  for (map<int, vector<pair<int, int> > >::iterator it = Mx.begin();
       it != Mx.end(); it++)
    X.push_back(pair<int, int>(it->first, M - Solve(it->second)));
  for (map<int, vector<pair<int, int> > >::iterator it = My.begin();
       it != My.end(); it++)
    Y.push_back(pair<int, int>(it->first, N - Solve(it->second)));
  if ((N - (int)Mx.size() - 1) % 2 == 1) {
    for (int temp = 1; temp <= N - 1; temp++)
      if (Mx.find(temp) == Mx.end()) {
        X.push_back(pair<int, int>(temp, M));
        break;
      }
  }
  if ((M - (int)My.size() - 1) % 2 == 1) {
    for (int temp = 1; temp <= M - 1; temp++)
      if (My.find(temp) == My.end()) {
        Y.push_back(pair<int, int>(temp, N));
        break;
      }
  }
  int Delta = 0;
  for (int i = 0; i < (int)X.size(); i++) Delta ^= X[i].second;
  for (int i = 0; i < (int)Y.size(); i++) Delta ^= Y[i].second;
  if (Delta == 0)
    cout << "SECOND\n";
  else {
    cout << "FIRST\n";
    int bit = 0;
    for (int i = 29; i >= 0; i--)
      if ((Delta >> i) & 1) {
        bit = i;
        break;
      }
    for (int i = 0; i < (int)X.size(); i++) {
      if ((X[i].second >> bit) & 1) {
        int Temp = X[i].second;
        for (int j = 0; j <= bit; j++)
          if ((Delta >> j) & 1) {
            if ((Temp >> j) & 1)
              Temp -= (1 << j);
            else
              Temp += (1 << j);
          }
        pair<int, int> Ans = Move(Mx[X[i].first], X[i].second - Temp);
        cout << X[i].first << " " << Ans.first << " " << X[i].first << " "
             << Ans.second << endl;
        return 0;
      }
    }
    for (int i = 0; i < (int)Y.size(); i++) {
      if ((Y[i].second >> bit) & 1) {
        int Temp = Y[i].second;
        for (int j = 0; j <= bit; j++)
          if ((Delta >> j) & 1) {
            if ((Temp >> j) & 1)
              Temp -= (1 << j);
            else
              Temp += (1 << j);
          }
        pair<int, int> Ans = Move(My[Y[i].first], Y[i].second - Temp);
        cout << Ans.first << " " << Y[i].first << " " << Ans.second << " "
             << Y[i].first << endl;
        return 0;
      }
    }
  }
  return 0;
}
