#include <bits/stdc++.h>
using namespace std;
map<int, vector<pair<int, int> > > M;
long long f(vector<pair<int, int> > v, int tope) {
  sort(v.begin(), v.end());
  long long ans = 0;
  int x = v[0].first;
  int y = v[0].second;
  ans += (y - x);
  int n = (int)v.size();
  for (int i = 1; i < n; i++) {
    if (v[i].first > y) {
      ans += (v[i].second - v[i].first);
      x = v[i].first;
      y = v[i].second;
    } else {
      if (v[i].second - y > 0) {
        ans += (v[i].second - y);
        y = v[i].second;
      }
    }
  }
  return ans;
}
long long g(vector<pair<int, int> > v, long long tam, int tope) {
  sort(v.begin(), v.end());
  sort(v.begin(), v.end());
  long long ans = 0;
  int x = v[0].first;
  int y = v[0].second;
  ans += (y - x);
  int n = (int)v.size();
  if (tam <= v[0].first) {
    return tam;
  } else
    tam -= v[0].first;
  for (int i = 1; i < n; i++) {
    if (v[i].first > y) {
      ans += (v[i].second - v[i].first);
      int tam2 = v[i].first - y;
      if (tam <= tam2) {
        return y + tam;
      } else
        tam -= tam2;
      x = v[i].first;
      y = v[i].second;
    } else {
      if (v[i].second - y > 0) {
        ans += (v[i].second - y);
        y = v[i].second;
      }
    }
  }
  return y + tam;
}
int dame(vector<pair<int, int> > v) {
  sort(v.begin(), v.end());
  int n = (int)v.size();
  int ans = 0;
  vector<pair<int, int> > v2;
  for (int i = 0; i < n; i++) {
    v2.push_back(make_pair(v[i].first, 0));
    v2.push_back(make_pair(v[i].second, 1));
  }
  sort(v2.begin(), v2.end());
  for (int i = 0; i < 2 * n - 1; i++) {
    if (v2[i].second == 0 && v2[i + 1].second == 1) {
      ans += v2[i + 1].first - v2[i].first;
    }
    if (v2[i].second == 1 && v2[i + 1].second == 1) {
      ans += max(0, (v2[i + 1].first) - (v2[i].first));
    }
    if (v2[i].second == 0 && v2[i + 1].second == 0) {
      ans += max(0, (v2[i + 1].first - v2[i].first));
    }
  }
  return ans;
}
void mu(vector<pair<int, int> > v, int x) {
  int n = (int)v.size();
  cout << "-----------------" << endl;
  cout << x << "      " << dame(v) << endl;
  for (int i = 0; i < n; i++) {
    cout << v[i].first << " " << v[i].second << " , ";
  }
  cout << endl;
  cout << "---------------" << endl;
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  int x1, x2, y1, y2;
  for (int i = 0; i < k; i++) {
    cin >> x1 >> y1 >> x2 >> y2;
    if (x1 > x2)
      swap(x1, x2), swap(y1, y2);
    else if (x1 == x2)
      if (y1 > y2) swap(x1, x2), swap(y1, y2);
    if (x1 == x2) {
      M[x1].push_back(make_pair(y1, y2));
    } else {
      M[y1 + n + 1].push_back(make_pair(x1, x2));
    }
  }
  int c1 = 0, c2 = 0;
  long long x = 0;
  M.erase(0);
  M.erase(n);
  M.erase(n + 1 + m);
  M.erase(n + 1);
  for (map<int, vector<pair<int, int> > >::iterator it = M.begin();
       it != M.end(); it++) {
    int a = (*it).first;
    vector<pair<int, int> > b = (*it).second;
    if (a <= n) {
      long long tam = f(b, m);
      x ^= (m - tam);
      c1++;
    } else {
      long long tam = f(b, n);
      x ^= (n - tam);
      c2++;
    }
  }
  if ((n + 1 - c1) % 2 == 1) {
    x ^= m;
  }
  if ((m + 1 - c2) % 2 == 1) {
    x ^= n;
  }
  if (x) {
    puts("FIRST");
    if (c1 < n + 1) {
      if ((x ^ m) < m) {
        long long val = m - (x ^ m);
        for (int i = 0; i <= n; i++) {
          if (M.find(i) == M.end() && i != 0 && i != n) {
            printf("%d %d %d %I64d\n", i, 0, i, val);
            return 0;
          }
        }
      }
    }
    if (c2 < m + 1) {
      if ((x ^ n) < n) {
        long long val = n - (x ^ n);
        for (int i = 0; i <= m; i++) {
          if ((M.find(i + n + 1) == M.end()) && (i != 0) && (i != m)) {
            printf("%d %d %I64d %d\n", 0, i, val, i);
            return 0;
          }
        }
      }
    }
    for (map<int, vector<pair<int, int> > >::iterator it = M.begin();
         it != M.end(); it++) {
      int u = (*it).first;
      vector<pair<int, int> > t = (*it).second;
      if (u == 0 || u == n) continue;
      if ((u == (n + 1)) || (u == (n + 1 + m))) continue;
      if (u <= n) {
        long long tam = f(t, m);
        tam = m - tam;
        if ((tam ^ x) < tam) {
          long long tam2 = g(t, tam - (x ^ tam), m);
          printf("%d %d %d %I64d\n", u, 0, u, tam2);
          return 0;
        }
      } else {
        long long tam = f(t, n);
        tam = n - tam;
        if ((tam ^ x) < tam) {
          long long tam2 = g(t, tam - (x ^ tam), n);
          printf("%d %d %I64d %d\n", 0, u - (n + 1), tam2, u - (n + 1));
          return 0;
        }
      }
    }
  } else {
    puts("SECOND");
  }
}
