#include <bits/stdc++.h>
using namespace std;
map<int, set<pair<int, int> > > seg_x, seg_y;
int get_area(const set<pair<int, int> > &seg) {
  int start = 0;
  int last_cover = 0;
  int answer = 0;
  for (const auto &v : seg) {
    if (v.first > last_cover) {
      answer += last_cover - start;
      start = v.first;
      last_cover = v.second;
    } else {
      last_cover = max(last_cover, v.second);
    }
  }
  answer += last_cover - start;
  return answer;
}
void get_answer(int c, const set<pair<int, int> > &seg, int need, bool y,
                int mx) {
  int last_cover = 0;
  int uncovered = 0;
  for (const auto &v : seg) {
    if (v.first > last_cover) {
      if (uncovered + v.first - last_cover >= need) {
        if (y) {
          cout << last_cover + need - uncovered << " " << c << " " << mx << " "
               << c << endl;
        } else {
          cout << c << " " << last_cover + need - uncovered << " " << c << " "
               << mx << endl;
        }
        exit(0);
      }
      uncovered += v.first - last_cover;
      last_cover = v.second;
    } else {
      last_cover = max(last_cover, v.second);
    }
  }
  if (y) {
    cout << last_cover + need - uncovered << " " << c << " " << mx << " " << c
         << endl;
  } else {
    cout << c << " " << last_cover + need - uncovered << " " << c << " " << mx
         << endl;
  }
  exit(0);
}
int main() {
  int n, m, k;
  cin.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) {
      seg_x[x1].insert(make_pair(min(y1, y2), max(y1, y2)));
    } else {
      seg_y[y1].insert(make_pair(min(x1, x2), max(x1, x2)));
    }
  }
  int free_x = n - 1;
  int free_x_idx = 0;
  int free_y = m - 1;
  int free_y_idx = 0;
  int xor_x = 0, xor_y = 0;
  int px = 0;
  for (const auto &x : seg_x) {
    free_x--;
    xor_x ^= m - get_area(x.second);
    if (x.first != px + 1) free_x_idx = px + 1;
    px = x.first;
  }
  if (seg_x.count(n - 1) == 0) free_x_idx = n - 1;
  int py = 0;
  for (const auto &y : seg_y) {
    free_y--;
    xor_y ^= n - get_area(y.second);
    if (y.first != py + 1) free_y_idx = py + 1;
    py = y.first;
  }
  if (seg_y.count(m - 1) == 0) free_y_idx = m - 1;
  if (free_y & 1) xor_y ^= n;
  if (free_x & 1) xor_x ^= m;
  if (xor_x ^ xor_y) {
    cout << "FIRST" << endl;
    for (const auto &x : seg_x) {
      int can = m - get_area(x.second);
      int result = xor_x ^ xor_y ^ can;
      if (can >= result) {
        get_answer(x.first, x.second, result, 0, m);
      }
    }
    for (const auto &y : seg_y) {
      int can = n - get_area(y.second);
      int result = xor_x ^ xor_y ^ can;
      if (can >= result) {
        get_answer(y.first, y.second, result, 1, n);
      }
    }
    if (free_x > 0) {
      int result = xor_x ^ xor_y ^ m;
      if (result <= m) {
        get_answer(free_x_idx, set<pair<int, int> >(), result, 0, m);
      }
    }
    if (free_y > 0) {
      int result = xor_x ^ xor_y ^ n;
      if (result <= n) {
        get_answer(free_y_idx, set<pair<int, int> >(), result, 1, n);
      }
    }
    assert(0);
  } else {
    cout << "SECOND" << endl;
  }
  return 0;
}
