Two players play the following game. Initially, the players have a knife and a rectangular sheet of paper, divided into equal square grid cells of unit size. The players make moves in turn, the player who can't make a move loses. In one move, a player can take the knife and cut the paper along any segment of the grid line (not necessarily from border to border). The part of the paper, that touches the knife at least once, is considered cut. There is one limit not to turn the game into an infinite cycle: each move has to cut the paper, that is the knife has to touch the part of the paper that is not cut before.

Obviously, the game ends when the entire sheet is cut into 1 × 1 blocks. During the game, the pieces of the sheet are not allowed to move. It is also prohibited to cut along the border. The coordinates of the ends of each cut must be integers.

You are given an n × m piece of paper, somebody has already made k cuts there. Your task is to determine who will win if the players start to play on this sheet. You can consider that both players play optimally well. If the first player wins, you also need to find the winning first move.

Input

The first line contains three integers n, m, k (1 ≤ n, m ≤ 109, 0 ≤ k ≤ 105) — the sizes of the piece of paper and the number of cuts. Then follow k lines, each containing 4 integers xbi, ybi, xei, yei (0 ≤ xbi, xei ≤ n, 0 ≤ ybi, yei ≤ m) — the coordinates of the ends of the existing cuts. 

It is guaranteed that each cut has a non-zero length, is either vertical or horizontal and doesn't go along the sheet border.

The cuts may intersect, overlap and even be the same. That is, it is not guaranteed that the cuts were obtained during any correct game.

Output

If the second player wins, print "SECOND". Otherwise, in the first line print "FIRST", and in the second line print any winning move of the first player (the coordinates of the cut ends, follow input format to print them).

Examples

Input

2 1 0


Output

FIRST
1 0 1 1


Input

2 2 4
0 1 2 1
0 1 2 1
1 2 1 0
1 1 1 2


Output

SECOND
2 2 1
0 1 1 1
 5 5 20
3 1 3 3
1 2 2 2
4 3 4 2
3 2 2 2
3 4 2 4
4 1 4 5
4 3 5 3
5 1 0 1
0 1 5 1
3 5 3 1
3 1 3 2
1 5 1 0
3 4 3 3
3 3 3 4
1 3 3 3
2 5 2 1
0 2 1 2
2 1 0 1
4 3 5 3
1 4 1 5
 5 5 46
3 5 3 1
2 1 2 0
1 2 1 0
4 1 0 1
4 3 4 1
0 4 5 4
3 0 3 4
3 2 0 2
4 5 4 3
4 1 3 1
1 4 1 1
1 1 2 1
3 2 1 2
3 2 3 4
2 0 2 2
1 0 1 2
1 1 4 1
0 4 3 4
3 0 3 3
3 1 3 4
5 1 3 1
3 0 3 5
4 1 1 1
2 5 2 3
4 2 4 1
1 3 1 5
1 2 1 4
4 2 4 1
3 2 3 0
0 4 3 4
1 3 2 3
4 5 4 3
1 2 1 1
4 3 3 3
2 0 2 1
3 0 3 2
3 1 3 0
2 4 2 0
2 5 2 3
1 3 1 2
0 2 5 2
0 4 2 4
3 4 3 2
4 3 4 2
4 2 3 2
2 1 1 1
 5 5 17
4 4 4 1
3 2 1 2
1 3 3 3
4 4 4 3
4 4 4 5
5 4 4 4
5 3 2 3
1 5 1 4
4 0 4 4
2 3 2 4
1 0 1 5
3 2 3 0
3 1 4 1
1 4 4 4
1 2 1 1
3 1 3 5
1 3 4 3
 2 2 0
 1000000000 1000000000 0
 5 5 3
1 2 1 0
0 2 3 2
2 1 0 1
 999999999 999999999 0
 5 5 44
4 0 4 4
4 4 4 1
3 0 3 4
1 5 1 4
1 4 1 1
1 5 1 4
4 4 4 5
2 0 2 2
1 2 0 2
1 1 1 0
1 1 2 1
2 1 2 0
4 3 4 0
4 4 4 3
1 0 1 5
1 4 3 4
1 2 1 3
4 2 1 2
3 1 3 3
0 1 3 1
2 1 0 1
0 3 1 3
5 1 2 1
4 4 4 5
1 3 1 0
4 3 0 3
5 2 2 2
2 2 0 2
1 1 0 1
3 4 2 4
1 5 1 1
4 3 4 1
2 3 2 5
1 3 1 5
3 4 3 5
1 2 4 2
4 4 4 3
3 3 2 3
4 0 4 4
3 5 3 4
0 2 1 2
3 0 3 1
4 0 4 3
3 4 1 4
 1 2 1
0 1 1 1
 1 1 0
 3 4 2
1 0 1 4
2 0 2 4
 5 5 42
4 2 1 2
2 4 2 3
3 4 5 4
3 5 3 4
3 4 3 1
1 4 1 0
3 3 3 4
3 3 4 3
1 4 1 5
2 2 4 2
1 2 1 5
5 2 1 2
4 2 3 2
4 3 2 3
5 4 3 4
3 1 3 4
2 1 2 3
1 1 1 5
1 0 1 4
4 4 4 1
4 1 1 1
4 4 0 4
1 3 1 0
4 3 4 5
2 3 2 5
2 5 2 4
1 3 1 0
3 4 3 3
3 1 4 1
3 4 5 4
2 2 2 0
2 0 2 4
0 1 5 1
3 2 3 0
5 2 4 2
1 4 4 4
2 2 2 0
4 4 5 4
2 2 2 3
2 3 2 2
4 1 0 1
3 3 3 2
 1 1000000000 0
 5 5 10
4 3 4 0
3 5 3 4
2 4 2 3
3 3 3 0
4 4 5 4
1 2 0 2
4 3 1 3
1 1 1 3
2 3 4 3
4 1 1 1
 4 4 10
3 0 3 1
2 1 4 1
1 1 2 1
3 1 2 1
3 1 2 1
3 3 4 3
2 3 2 0
4 2 0 2
3 2 2 2
2 2 2 1
 5 5 2
4 3 4 0
5 4 1 4
 1000000000 999999999 1
314159265 0 314159265 999999999
 4 3 10
1 0 1 1
0 1 1 1
0 2 1 2
1 3 1 2
2 0 2 1
2 3 2 2
4 1 3 1
3 0 3 1
4 2 3 2
3 3 3 2
 5 5 19
4 0 4 1
3 2 2 2
0 3 3 3
4 1 4 0
5 4 2 4
2 5 2 0
5 3 2 3
5 1 4 1
4 0 4 5
1 4 5 4
3 0 3 1
2 1 2 3
1 1 1 3
2 2 2 0
4 5 4 1
0 3 5 3
5 3 1 3
3 2 3 4
5 1 1 1
 10 11 13
0 4 1 4
2 8 2 10
10 4 5 4
2 4 10 4
9 6 8 6
10 9 7 9
3 2 3 1
1 8 1 0
2 10 2 5
8 1 1 1
10 3 3 3
7 10 3 10
2 1 2 4
 1000000000 999999999 0
 4 1 0
 5 5 38
4 5 4 4
5 1 0 1
0 2 2 2
4 3 2 3
5 3 1 3
2 2 2 4
1 2 0 2
0 2 4 2
3 3 3 2
3 1 3 0
4 3 3 3
0 1 1 1
2 4 2 5
2 5 2 2
1 3 1 0
2 5 2 1
5 2 1 2
0 1 4 1
2 4 3 4
3 3 4 3
2 3 2 0
2 3 2 5
1 3 3 3
4 1 2 1
4 3 4 2
3 1 5 1
4 4 4 2
0 2 1 2
2 2 2 5
4 2 4 3
3 3 2 3
4 0 4 5
4 2 0 2
3 1 3 3
2 5 2 0
1 1 1 0
1 3 2 3
4 0 4 3
 5 5 0

FIRST
1 0 1 1
 FIRST
0 4 4 4
 FIRST
0 3 3 3
 FIRST
0 2 5 2
 SECOND
 SECOND
 FIRST
2 0 2 3
 SECOND
 FIRST
0 4 5 4
 SECOND
 SECOND
 FIRST
0 1 3 1
 FIRST
0 3 5 3
 FIRST
0 1 1 1
 FIRST
2 0 2 5
 FIRST
1 0 1 4
 FIRST
4 0 4 4
 SECOND
 FIRST
1 0 1 2
 FIRST
0 2 4 2
 FIRST
1 0 1 11
 FIRST
1 0 1 999999999
 FIRST
1 0 1 1
 FIRST
0 4 4 4
 SECOND

/*===============*\
|  ID: TMANDZU    |
|    LANG: C++    |
\*===============*/
//Tornike Mandzulashvili
//#pragma comment(linker,"/STACK:256000000")
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <stack>
#include <math.h>
#include <vector>
#include <string>
#include <map>
#include <queue>
#include <iostream>
#include <set>

#define EPS 0.000000001
#define Pi 3.1415926535897932384626433832795028841971
#define hash1 1000003
#define hash2 1000033
#define md 1000000007
#define INF 1000000000
#define mp make_pair
#define pb push_back
#define S size()
#define MX(aa,bb) (aa>bb?aa:bb)
#define MN(aa,bb) (aa<bb?aa:bb)
#define fi first
#define se second
#define PI pair < long long ,long long  >
#define REP(i,a,n) for(i=a;i<n;i++)
#define sc scanf
#define pt prlong long f
#define big long long
#define VI vector <long long >

using namespace std;

struct node
{
    long long  l,r,pos;
};

vector <node> A,B;
long long  delta,sul,N,M,K,i,j,xx1,xx2,yy1,yy2;
long long  lastt,ans,ll,rr,start,last,lena,lenb,t;
vector <PI> d[1000000],db[1000000],D[1000000],DB[1000000];
map <long long ,long long > MA,MB;
long long  X[1000000],Y[1000000],SUMA[1000000],SUMB[1000000];

bool cmp(PI X,PI Y)
{
    return (X.fi<Y.fi);
}

long long ans1;

main()
{
 //   freopen("text.in","r",stdin);   freopen("text.out","w",stdout);

    scanf("%I64d %I64d %I64d",&N,&M,&K);

    for (i=1;i<=K;i++)
    {
        scanf("%I64d %I64d %I64d %I64d",&xx1,&yy1,&xx2,&yy2);
        if (xx1==xx2)
            A.pb((node){yy1,yy2,xx1});
        else B.pb((node){xx1,xx2,yy1});
    }

    for (i=0;i<A.S;i++)
    {
        if (A[i].l>A[i].r)
            swap(A[i].l,A[i].r);

        if (!MA[A[i].pos])
        {
            lena++;
            X[lena]=A[i].pos;
            MA[A[i].pos]=lena;
            d[lena].pb(mp(A[i].l,A[i].r));
        }else
        {
            d[MA[A[i].pos]].pb(mp(A[i].l,A[i].r));
        }
    }

    for (i=1;i<=lena;i++)
    {
        sort(d[i].begin(),d[i].end(),cmp);

        start=0;
        last=0;
        lastt=0;

        for (j=0;j<d[i].S;j++)
        {
            ll=d[i][j].fi;
            rr=d[i][j].se;

            if (ll>last)
            {
                D[i].pb(mp(last,ll));
                SUMA[i]+=ll-last;
                ans^=ll-last;

                start=ll;
                last=rr;
            }else
            {
                last=max(last,rr);
            }

        }

         if (M>last){
                D[i].pb(mp(last,M));
                SUMA[i]+=M-last;
                ans^=M-last;}
    }

    t=(N-1-lena+4)%2;

    if (t) ans^=M;



    for (i=0;i<B.S;i++)
    {
         if (B[i].l>B[i].r)
            swap(B[i].l,B[i].r);

        if (!MB[B[i].pos])
        {
            lenb++;
            Y[lenb]=B[i].pos;
            MB[B[i].pos]=lenb;
            db[lenb].pb(mp(B[i].l,B[i].r));
        }else
        {
            db[MB[B[i].pos]].pb(mp(B[i].l,B[i].r));
        }
    }

    for (i=1;i<=lenb;i++)
    {
        sort(db[i].begin(),db[i].end(),cmp);

        start=0;
        last=0;
        lastt=0;

        for (j=0;j<db[i].S;j++)
        {
            ll=db[i][j].fi;
            rr=db[i][j].se;

            if (ll>last)
            {
                DB[i].pb(mp(last,ll));
                ans^=ll-last;
                SUMB[i]+=ll-last;

                start=ll;
                last=rr;
            }else
            {
                last=max(last,rr);
            }

        }

         if (N>last){
                DB[i].pb(mp(last,N));
                SUMB[i]+=N-last;
                ans^=N-last;}
    }

    t=(M-1-lenb+4)%2;

    if (t) ans^=N;

    if (ans==0)
    {
        cout<<"SECOND"<<endl;
        return 0;
    }

    cout<<"FIRST"<<endl;

    for (i=1;i<=lena;i++)
    for (j=0;j<D[i].S;j++)
    {
        ans1=ans^(D[i][j].se-D[i][j].fi);
        if (ans1<=D[i][j].se-D[i][j].fi)
        {
            delta=D[i][j].se-D[i][j].fi;
            cout<<X[i]<<" "<<D[i][j].fi<<" "<<X[i]<<" "<<D[i][j].fi+delta-ans1<<endl;
            return 0;
        }
    }

    for (i=1;i<=lenb;i++)
    for (j=0;j<DB[i].S;j++)
    {
        ans1=ans^(DB[i][j].se-DB[i][j].fi);
        if (ans1<=DB[i][j].se-DB[i][j].fi)
        {
            delta=DB[i][j].se-DB[i][j].fi;
            cout<<DB[i][j].fi<<" "<<Y[i]<<" "<<DB[i][j].fi+delta-ans1<<" "<<Y[i]<<endl;
            return 0;
        }
    }

    for (i=1;i<=lenb;i++)
    if (!MB[Y[i]-1] && Y[i]-1>=0 && ((M-1-lenb+4)%2))
    if (ans^N <= N)
    {
          cout<<0<<" "<<Y[i]-1<<" "<<N-(ans^N)<<" "<<Y[i]-1<<endl;
          return 0;
    }

    for (i=1;i<=lenb;i++)
    if (!MB[Y[i]+1] && Y[i]+1<=N && ((M-1-lenb+4)%2))
    if (ans^N <= N)
    {
          cout<<0<<" "<<Y[i]+1<<" "<<N-(ans^N)<<" "<<Y[i]+1<<endl;
          return 0;
    }


    for (i=1;i<=lena;i++)
    if (!MA[X[i]-1] && X[i]-1>=0 && ((N-1-lena+4)%2))
    if (ans^M <= M)
    {
          cout<<X[i]-1<<" "<<0<<" "<<X[i]-1<<" "<<M-(M^ans)<<endl;
          return 0;
    }

    for (i=1;i<=lena;i++)
    if (!MA[X[i]+1] && X[i]+1<=M && ((N-1-lena+4)%2))
    if (ans^M <= M)
    {
          cout<<X[i]+1<<" "<<0<<" "<<X[i]+1<<" "<<M-(M^ans)<<endl;
          return 0;
    }

    if (lena==0)
    {
        cout<<1<<" "<<0<<" "<<1<<" "<<M-(M^ans)<<endl;
        return 0;
    }

    if (lenb==0)
    {
        cout<<0<<" "<<1<<" "<<N-(N^ans)<<" "<<1<<endl;
        return 0;
    }

}

