#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
vector<pair<int, int> > BUFF[200100];
int bpos = 0;
int Val[200200];
int who[200200];
int key[200200];
int pos = 0;
void proc(map<int, vector<pair<int, int> > *> &mp, int cnt, int id) {
  for (map<int, vector<pair<int, int> > *>::iterator it = mp.begin();
       it != mp.end(); ++it) {
    (it->second)->push_back(pair<int, int>(cnt, cnt));
    int last = 0;
    vector<pair<int, int> > &vec = *(it->second);
    sort((vec).begin(), (vec).end());
    int curr = 0;
    for (int i = (0), ei = (vec.size()); i < ei; i++) {
      pair<int, int> p = vec[i];
      if (p.first > last) {
        curr += p.first - last;
      }
      last = max(last, p.second);
    }
    Val[pos] = curr;
    who[pos] = id;
    key[pos] = it->first;
    pos++;
  }
}
int findAns(map<int, vector<pair<int, int> > *> &mp, int win, int need) {
  int ans = -1;
  int last = 0;
  vector<pair<int, int> > &vec = *mp[key[win]];
  int has = 0;
  for (int i = (0), ei = (vec.size()); i < ei; i++) {
    pair<int, int> p = vec[i];
    if (p.first > last) {
      int currLen = has + p.first - last;
      if (currLen >= need) {
        ans = last + (need - has);
        break;
      }
      has = currLen;
    }
    last = max(last, p.second);
  }
  return ans;
}
void run() {
  map<int, vector<pair<int, int> > *> hor;
  map<int, vector<pair<int, int> > *> ver;
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = (0), ei = (k); i < ei; i++) {
    int x1, y1, x2, y2;
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    if (x1 == x2) {
      if (x1 == 0 || x1 == n) continue;
      if (hor.find(x1) == hor.end()) {
        hor[x1] = BUFF + bpos;
        bpos++;
      }
      if (y1 > y2) swap(y1, y2);
      hor[x1]->push_back(pair<int, int>(y1, y2));
    } else {
      if (y1 == 0 || y1 == m) continue;
      if (ver.find(y1) == ver.end()) {
        ver[y1] = BUFF + bpos;
        bpos++;
      }
      if (x1 > x2) swap(x1, x2);
      ver[y1]->push_back(pair<int, int>(x1, x2));
    }
  }
  if (hor.size() < n && ((n - 1 - hor.size()) & 1)) {
    for (int i = (1), ei = (n); i < ei; i++)
      if (hor.find(i) == hor.end()) {
        hor[i] = BUFF + bpos;
        bpos++;
        break;
      }
  }
  if (ver.size() < m && ((m - 1 - ver.size()) & 1)) {
    for (int i = (1), ei = (m); i < ei; i++)
      if (ver.find(i) == ver.end()) {
        ver[i] = BUFF + bpos;
        bpos++;
        break;
      }
  }
  proc(hor, m, 0);
  proc(ver, n, 1);
  int res = 0;
  for (int i = (0), ei = (pos); i < ei; i++) res ^= Val[i];
  if (res == 0)
    puts("SECOND");
  else {
    puts("FIRST");
    int win = -1;
    int need = -1;
    for (int i = (0), ei = (pos); i < ei; i++) {
      int left = Val[i] ^ res;
      if (left < Val[i]) {
        win = i;
        need = Val[i] - left;
        break;
      }
    }
    if (who[win] == 0) {
      int ans = findAns(hor, win, need);
      printf("%d %d %d %d\n", key[win], 0, key[win], ans);
    } else {
      int ans = findAns(ver, win, need);
      printf("%d %d %d %d\n", 0, key[win], ans, key[win]);
    }
  }
}
int main() {
  run();
  return 0;
}
