//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()];
    if(ans==1){
        cout << "ok\n";
        print(vet[2]-vet[1]);
    }
    else if(ans==2)
        print(vet[2]-vet[0]);
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        ll ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 0}, {vet[1], 1}, {vet[2], 2}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()-1];
    if(ans==0)
        print(vet[2]-vet[1]);
    else if(ans==1)
        print(vet[2]-vet[0]);
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        ll ans = m[read()-1];
        if(ans==0)
            print(vet[2]-vet[1]);
        else if(ans==1)
            print(vet[2]-vet[0]);
        else
            exit(0);
    }

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

int read(){
    int ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    int ans = m[read()];
    if(ans==1){
        print(vet[2]-vet[1]);
    }
    else if(ans==2){
        print(vet[2]-vet[0]);
    }
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        int ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

int read(){
    int ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    int ans = m[read()];
    if(ans==1){
        print(vet[2]-vet[1]);
    }
    else if(ans==2){
        print(vet[2]-vet[0]);
    }
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        int ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
        cout << "ok\n";
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

int read(){
    int ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    int ans = m[read()];
    if(ans==1){
        print(vet[2]-vet[1]);
    }
    else if(ans==2){
        print(vet[2]-vet[0]);
    }
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        int ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();
    print(-1);

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

int read(){
    int ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    sort(vet.begin(), vet.end());

    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    int ans = m[read()];
    if(ans==1)
        print(vet[2]-vet[1]);
    else if(ans==2)
        print(vet[2]-vet[0]);
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        int ans = m[read()];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    return ans;
}

ll print(ll x){
    cout << x << endl;
    cout.flush();
    if(x<=0) exit(0);
    return x;
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 0}, {vet[1], 1}, {vet[2], 2}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()-1];
    if(ans==0)
        print(vet[2]-vet[1]);
    else if(ans==1)
        print(vet[2]-vet[0]);
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        ll ans = m[read()-1];
        if(ans==0)
            print(vet[2]-vet[1]);
        else if(ans==1)
            print(vet[2]-vet[0]);
        else
            exit(0);
    }

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()];
    if(ans==1){
        print(vet[2]-vet[1]);
    }
    else if(ans==2){
        cout << "ok\n";
        print(vet[2]-vet[0]);
    }
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        ll ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()];
    if(ans==1){
        print(vet[2]-vet[1]);
    }
    else if(ans==2){
        print(vet[2]-vet[0]);
    }
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        ll ans = m[read()-1];
        cout << "ok\n";
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()];
    if(ans==1){
        print(vet[2]-vet[1]);
    }
    else if(ans==2){
        print(vet[2]-vet[0]);
    }
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        cout << "ok\n";
        ll ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    cout << "ok\n";

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()];
    if(ans==1)
        print(vet[2]-vet[1]);
    else if(ans==2)
        print(vet[2]-vet[0]);
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        print(2*vet[2]-vet[1]-vet[0]);
        ll ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


//g++ -std=c++17 -Wall t.cpp -o test -g -O2
#include <bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pii>
#define sws ios_base::sync_with_stdio(false);cin.tie(NULL)
// #define endl '\n'
#define teto(a, b) (a+b-1)/(b)

const int MAX = 2000000;
const ll MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const ld EPS = 1e-7;
const ld PI = acosl(-1.0);

using namespace std;

// End - Template //

void choose(bool opt){
    if(opt)
        cout << "First" << endl;
    else
        cout << "Second" << endl;
    cout.flush();
}

ll read(){
    ll ans;
    cin >> ans;
    if(ans<=0)
        exit(0);
    return ans;
}

void print(ll x){
    cout << x << endl;
    cout.flush();
}

int main()
{sws;

    vi vet(3);
    cin >> vet[0] >> vet[1] >> vet[2];
    vii vet2 = {{vet[0], 1}, {vet[1], 2}, {vet[2], 3}};
    sort(vet2.begin(), vet2.end());
    map<int, int> m;
    for(int i=0;i<3;i++)
        m[vet2[i].ss]=i+1;

    choose(1);
    print(2*vet[2]-vet[1]-vet[0]);
    ll ans = m[read()];
    if(ans==1){
        print(vet[2]-vet[1]);
    }
    else if(ans==2){
        print(vet[2]-vet[0]);
    }
    else{
        vet[2]=3*vet[2]-vet[1]-vet[0];
        cout << "ok\n";
        print(2*vet[2]-vet[1]-vet[0]);
        ll ans = m[read()-1];
        if(ans==1)
            print(vet[2]-vet[1]);
        else
            print(vet[2]-vet[0]);
    }

    read();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define mk make_pair
#define fs first
#define sc second
ll a[11];
// ll move(){
// 	vector<ll>v={a[1],a[2],a[3]};
// 	sort(v.begin(), v.end());
// 	ll tmp=abs(v[1]-v[0]-(v[2]-v[1]));
// 	if(tmp==0){
// 		tmp=v[1]-v[0];tmp*=2;
// 	}
// 	cout<<tmp<<endl;cout.flush();
// 	return tmp;
// }
bool tre(ll x, ll y){
	ll b[4];
	b[1]=a[1];b[2]=a[2];b[3]=a[3];
	b[x]+=y;
	vector<pair<ll, ll>> v={mk(a[1],1),mk(a[2],2), mk(a[3],3)};
	sort(v.begin(), v.end());
	if(v[0].fs==v[1].fs||v[1].fs==v[2].fs||(v[1].fs-v[0].fs==v[2].fs-v[1].fs&&x==v[2].sc))
		return 0;
	return 1;
}
int main(){
	ll t;
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"Second"<<endl;cout.flush();
	ll x, xx=0, y;
	while(1){
		// ll tmp;
		// if(a[1]==a[2]&&a[2]==a[3]){
		// 	tmp=10;
		// 	cout<<10<<endl;cout.flush();
		// }
		// else
		// 	tmp=move();
		scanf("%lld",&y);
		if(y==0 || y==-1){
			break;
		}
		x=xx;
		for(ll i=1; i<=3; ++i){
			if(i!=xx){
				if(tre(i, y)){
					x=i;
					break;
				}
			}
		}
		a[x]+=y;
		cout<<x<<endl;
		cout.flush();
		xx=x;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=11;
ll a[N];
int n, m;
ll move(){
	vector<ll>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	ll tmp=v[2]-v[0]+(v[2]-v[1]);
	assert(tmp>0&&tmp<=1e12);
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
ll move2(){
	vector<ll>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	ll tmp=(v[2]-v[1]);
	assert(v[2]-v[1]==v[1]-v[0]);
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
int main(){
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"First"<<endl;cout.flush();
	int x;
	while(1){
		ll tmp;
		tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
		tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
		tmp=move2();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define mk make_pair
#define fs first
#define sc second
const int N=200010;
int a[N];
int n, m;
int move(){
	vector<int>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	int tmp=abs(v[1]-v[0]-(v[2]-v[1]));
	if(tmp==0){
		tmp=v[1]-v[0];tmp*=2;
	}
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
bool tre(int x, int y){
	int b[4];
	b[1]=a[1];b[2]=a[2];b[3]=a[3];
	b[x]+=y;
	vector<pair<int, int>> v={mk(a[1],1),mk(a[2],2), mk(a[3],3)};
	sort(v.begin(), v.end());
	if(v[0].fs==v[1].fs||v[1].fs==v[2].fs||(v[1].fs-v[0].fs==v[2].fs-v[1].fs&&x==v[2].sc))
		return 0;
	return 1;
}
int main(){
	int t;
	scanf("%d%d%d",&a[1],&a[2],&a[3]);
	cout<<"Second"<<endl;cout.flush();
	int x, xx=-1, y;
	while(1){
		// int tmp;
		// if(a[1]==a[2]&&a[2]==a[3]){
		// 	tmp=10;
		// 	cout<<10<<endl;cout.flush();
		// }
		// else
		// 	tmp=move();
		scanf("%d",&y);
		if(y==0 || y==-1){
			break;
		}
		x=xx;
		for(int i=1; i<=3; ++i){
			if(i!=xx){
				if(tre(i, y)){
					x=i;
					break;
				}
			}
		}
		a[x]+=y;
		printf("%d\n",x);
		cout.flush();
		xx=x;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=200010;
int a[N];
int n, m;
int move(){
	vector<int>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	int tmp=abs(v[1]-v[0]-(v[2]-v[1]));
	if(tmp==0){
		tmp=v[1]-v[0];
	}
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
int main(){
	int t;
	scanf("%d%d%d",&a[1],&a[2],&a[3]);
	cout<<"First"<<endl;cout.flush();
	int x;
	while(1){
		int tmp;
		if(a[1]==a[2]&&a[2]==a[3]){
			tmp=10;
			cout<<10<<endl;cout.flush();
		}
		else
			tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define mk make_pair
#define fs first
#define sc second
ll a[11];
// ll move(){
// 	vector<ll>v={a[1],a[2],a[3]};
// 	sort(v.begin(), v.end());
// 	ll tmp=abs(v[1]-v[0]-(v[2]-v[1]));
// 	if(tmp==0){
// 		tmp=v[1]-v[0];tmp*=2;
// 	}
// 	cout<<tmp<<endl;cout.flush();
// 	return tmp;
// }
bool tre(ll x, ll y){
	ll b[4];
	b[1]=a[1];b[2]=a[2];b[3]=a[3];
	b[x]+=y;
	vector<pair<ll, ll>> v={mk(a[1],1),mk(a[2],2), mk(a[3],3)};
	sort(v.begin(), v.end());
	if(v[0].fs==v[1].fs||v[1].fs==v[2].fs||(v[1].fs-v[0].fs==v[2].fs-v[1].fs&&x==v[2].sc))
		return 0;
	return 1;
}
int main(){
	ll t;
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"Second"<<endl;cout.flush();
	ll x, xx=-1, y;
	while(1){
		// ll tmp;
		// if(a[1]==a[2]&&a[2]==a[3]){
		// 	tmp=10;
		// 	cout<<10<<endl;cout.flush();
		// }
		// else
		// 	tmp=move();
		scanf("%lld",&y);
		if(y==0 || y==-1){
			break;
		}
		x=xx;
		for(ll i=1; i<=3; ++i){
			if(i!=xx){
				if(tre(i, y)){
					x=i;
					break;
				}
			}
		}
		a[x]+=y;
		printf("%lld\n",x);
		cout.flush();
		xx=x;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=11;
ll a[N];
int n, m;
ll move(){
	vector<ll>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	ll tmp=v[2]-v[0]+(v[2]-v[1]);
	assert(tmp>0&&tmp<=1e12);
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
int main(){
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"First"<<endl;cout.flush();
	int x;
	while(1){
		ll tmp;
		tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=200010;
int a[N];
int n, m;
int move(){
	vector<int>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	int tmp=v[2]-v[0]+(v[2]-v[1]);
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
int main(){
	int t;
	scanf("%d%d%d",&a[1],&a[2],&a[3]);
	cout<<"First"<<endl;cout.flush();
	int x;
	while(1){
		int tmp;
		tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define mk make_pair
#define fs first
#define sc second
ll a[11];
// ll move(){
// 	vector<ll>v={a[1],a[2],a[3]};
// 	sort(v.begin(), v.end());
// 	ll tmp=abs(v[1]-v[0]-(v[2]-v[1]));
// 	if(tmp==0){
// 		tmp=v[1]-v[0];tmp*=2;
// 	}
// 	cout<<tmp<<endl;cout.flush();
// 	return tmp;
// }
bool tre(ll x, ll y){
	ll b[4];
	b[1]=a[1];b[2]=a[2];b[3]=a[3];
	b[x]+=y;
	vector<pair<ll, ll>> v={mk(b[1],1),mk(b[2],2), mk(b[3],3)};
	sort(v.begin(), v.end());

	// cout<<v[0].fs<<" "<<v[1].fs<<" "<<v[2].fs<<endl;
	if(v[0].fs==v[1].fs||v[1].fs==v[2].fs||(v[1].fs-v[0].fs==v[2].fs-v[1].fs&&x==v[2].sc))
		return 0;
	return 1;
}
int main(){
	ll t;
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"Second"<<endl;cout.flush();
	ll x, xx=0, y;
	t=1000;
	while(t--){
		// ll tmp;
		// if(a[1]==a[2]&&a[2]==a[3]){
		// 	tmp=10;
		// 	cout<<10<<endl;cout.flush();
		// }
		// else
		// 	tmp=move();
		scanf("%lld",&y);
		if(y==0 || y==-1){
			break;
		}
		x=xx;
		for(ll i=1; i<=3; ++i){
			if(i!=xx){
				if(tre(i, y)){
					x=i;//cout<<"###"<<endl;
					break;
				}
			}
		}
		a[x]+=y;
		cout<<x<<endl;
		cout.flush();
		xx=x;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=11;
ll a[N];
int n, m;
ll move(){
	vector<ll>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	ll tmp=v[2]-v[0]+(v[2]-v[1]);
	assert(tmp>0&&tmp<=1e12);
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
ll move2(){
	vector<ll>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	ll tmp=(v[2]-v[1]);
	assert(tmp>0&&tmp<=1e12);
	cout<<tmp<<endl;cout.flush();
	return tmp;
}
int main(){
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"First"<<endl;cout.flush();
	int x;
	while(1){
		ll tmp;
		tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
		tmp=move2();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=200010;
int a[N];
int n, m;
int move(){
	vector<int>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	int tmp=v[2]-v[0]+(v[2]-v[1]);
	cout<<tmp<<endl;cout.flush();
	assert(tmp>0);
	return tmp;
}
int main(){
	int t;
	scanf("%d%d%d",&a[1],&a[2],&a[3]);
	cout<<"First"<<endl;cout.flush();
	int x;
	while(1){
		int tmp;
		tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define mk make_pair
#define fs first
#define sc second
ll a[11];
// ll move(){
// 	vector<ll>v={a[1],a[2],a[3]};
// 	sort(v.begin(), v.end());
// 	ll tmp=abs(v[1]-v[0]-(v[2]-v[1]));
// 	if(tmp==0){
// 		tmp=v[1]-v[0];tmp*=2;
// 	}
// 	cout<<tmp<<endl;cout.flush();
// 	return tmp;
// }
bool tre(ll x, ll y){
	ll b[4];
	b[1]=a[1];b[2]=a[2];b[3]=a[3];
	b[x]+=y;
	vector<pair<ll, ll>> v={mk(a[1],1),mk(a[2],2), mk(a[3],3)};
	sort(v.begin(), v.end());
	if(v[0].fs==v[1].fs||v[1].fs==v[2].fs||(v[1].fs-v[0].fs==v[2].fs-v[1].fs&&x==v[2].sc))
		return 0;
	return 1;
}
int main(){
	ll t;
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"Second"<<endl;cout.flush();
	ll x, xx=0, y;
	t=1000;
	while(t--){
		// ll tmp;
		// if(a[1]==a[2]&&a[2]==a[3]){
		// 	tmp=10;
		// 	cout<<10<<endl;cout.flush();
		// }
		// else
		// 	tmp=move();
		scanf("%lld",&y);
		if(y==0 || y==-1){
			break;
		}
		x=xx;
		for(ll i=1; i<=3; ++i){
			if(i!=xx){
				if(tre(i, y)){
					x=i;
					break;
				}
			}
		}
		a[x]+=y;
		cout<<x<<endl;
		cout.flush();
		xx=x;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=11;
ll a[N];
int n, m;
ll move(){
	vector<ll>v={a[1],a[2],a[3]};
	sort(v.begin(), v.end());
	ll tmp=v[2]-v[0]+(v[2]-v[1]);
	cout<<tmp<<endl;cout.flush();
	assert(tmp>0);
	return tmp;
}
int main(){
	scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
	cout<<"First"<<endl;cout.flush();
	int x;
	while(1){
		ll tmp;
		tmp=move();
		scanf("%d",&x);
		if(x==0 || x==-1){
			break;
		}
		a[x]+=tmp;
	}
	return 0;
}


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;
	int y=0;

	while(1){
		int g;
		if(y==0){
			int ma=max({a[1],a[2],a[3]});
		 g=3*ma-a[1]-a[2]-a[3];
			cout<<g<<endl;

		}
		else{
			vector<int> ve;
			for(int i=1;i<=3;i++)if(i!=y){
				ve.pb(a[i]);
			}
			if(ve[0]<ve[1])swap(ve[0],ve[1]);
			if(a[y]+ve[1]==2*ve[0]){
				g=ve[0]-ve[1];
				cout<<ve[0]-ve[1]<<endl;
			}
			else{
				g=3*a[y]-a[1]-a[2]-a[3];
				cout<<3*a[y]-a[1]-a[2]-a[3]<<endl;
			}
		}

		cin>>y;

		if(y==-1)return 0;
		if(y==0)return 0;
		a[y]+=g;
	}
	return 0;
 }


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;
	while(1){
			int ma=max({a[1],a[2],a[3]});
			int mi=min({a[1],a[2],a[3]});
		int med=a[1]+a[2]+a[3]-ma-mi;
		cout<<2*ma-mi-med<<endl;
		int y;
		cin>>y;
		if(y==-1)return 0;
		if(y==0)return 0;
		a[y]+=2*ma-mi-med;
	}
	return 0;
 }


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;

	while(1){
		/*
			int ma=max({a[1],a[2],a[3]});
			int mi=min({a[1],a[2],a[3]});
		int med=a[1]+a[2]+a[3]-ma-mi;
		cout<<2*ma-mi-med<<endl;
	*/
		cout<<1<<endl;
		int y;
		cin>>y;

		if(y==-1)return 0;
		if(y==0)return 0;
	//	a[y]+=2*ma-mi-med;
	}
	return 0;
 }


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;

	while(1){

			int ma=max({a[1],a[2],a[3]});
		int g=3*ma-a[1]-a[2]-a[3];
		cout<<g<<endl;
		assert(g>0);
		assert(g<=1000000000ll*1000ll);

		int y;
		cin>>y;

		if(y==-1)return 0;
		if(y==0)return 0;
		a[y]+=g;
	}
	return 0;
 }


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;

	while(1){
		/*
			int ma=max({a[1],a[2],a[3]});
			int mi=min({a[1],a[2],a[3]});
		int med=a[1]+a[2]+a[3]-ma-mi;
		cout<<2*ma-mi-med<<endl;
	*/
		cout<<1<<endl;
		int y;
		cin>>y;

		if(y==-1)return 0;
		if(y==0)return 0;
		a[y]+=2*ma-mi-med;
	}
	return 0;
 }


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;

	while(1){

			int ma=max({a[1],a[2],a[3]});
		int g=3*ma-a[1]-a[2]-a[3];

		assert(g<=1000000000ll*1000ll);
		cout<<g<<endl;

		int y;
		cin>>y;

		if(y==-1)return 0;
		if(y==0)return 0;
		a[y]+=g;
	}
	return 0;
 }


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;

	while(1){

			int ma=max({a[1],a[2],a[3]});
		int g=3*ma-a[1]-a[2]-a[3];
		assert(g>0);
		assert(g<=1000000000ll*1000ll);
		cout<<g<<endl;

		int y;
		cin>>y;

		if(y==-1)return 0;
		if(y==0)return 0;
		a[y]+=g;
	}
	return 0;
 }


   #include <bits/stdc++.h>

//    #include <boost/multiprecision/cpp_int.hpp>
 #define int long long
 #define inf  1000000007
// #define inf  998244353

 #define pa pair<int,int>
 #define ll long long
 #define pal pair<double,double>
 #define ppap pair<pa,int>
  #define PI 3.14159265358979323846
  #define paa pair<int,char>
  #define  mp make_pair
  #define  pb push_back
  #define EPS (1e-8)

    int dx[8]={0,1,0,-1,1,1,-1,-1};
    int dy[8]={1,0,-1,0,-1,1,1,-1};
                                            using namespace std;
                                   			class pa3{
                                            	public:
                                            	int x;
                                   				int y,z;
                                            	pa3(int x=0,int y=0,int z=0):x(x),y(y),z(z) {}
                                            	bool operator < (const pa3 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		 return z<p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                   				bool operator > (const pa3 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		 return z>p.z;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa3 &p) const{
                                            		return x==p.x && y==p.y && z==p.z;
                                            	}
                                            		bool operator != (const pa3 &p) const{
                                            			return !( x==p.x && y==p.y && z==p.z);
                                            	}

                                            };

                                            class pa4{
                                            	public:
                                            	int x;
                                            	int y,z,w;
                                            	pa4(int x=0,int y=0,int z=0,int w=0):x(x),y(y),z(z),w(w) {}
                                            	bool operator < (const pa4 &p) const{
                                            		if(x!=p.x) return x<p.x;
                                            		if(y!=p.y) return y<p.y;
                                            		if(z!=p.z)return z<p.z;
                                            		return w<p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator > (const pa4 &p) const{
                                            		if(x!=p.x) return x>p.x;
                                            		if(y!=p.y) return y>p.y;
                                            		if(z!=p.z)return z>p.z;
                                            		return w>p.w;
                                            		//return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa4 &p) const{
                                            		return x==p.x && y==p.y && z==p.z &&w==p.w;
                                            	}

                                            };
                                            class pa2{
                                            	public:
                                            	int x,y;
                                            	pa2(int x=0,int y=0):x(x),y(y) {}
                                            	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                            	pa2 operator - (pa2 p) {return pa2(x-p.x,y-p.y);}
                                            	bool operator < (const pa2 &p) const{
                                            		return y != p.y ? y<p.y: x<p.x;
                                            	}
                                            	bool operator > (const pa2 &p) const{
                                            		return x != p.x ? x<p.x: y<p.y;
                                            	}
                                            	bool operator == (const pa2 &p) const{
                                            		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                            	}
                                            	bool operator != (const pa2 &p) const{
                                            		return !(abs(x-p.x)==0 && abs(y-p.y)==0);
                                            	}

                                            };

                                string itos( int i ) {
                                ostringstream s ;
                                s << i ;
                                return s.str() ;
                                }

                                int Gcd(int v,int b){
                                	if(v==0) return b;
                                	if(b==0) return v;
                                	if(v>b) return Gcd(b,v);
                                	if(v==b) return b;
                                	if(b%v==0) return v;
                                	return Gcd(v,b%v);
                                }

                                int mod;
int extgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int d = extgcd(b, a%b, y, x);
    y -= a/b * x;
    return d;
}
pa operator+(const pa & l,const pa & r) {
    return {l.first+r.first,l.second+r.second};
}
pa operator-(const pa & l,const pa & r) {
    return {l.first-r.first,l.second-r.second};
}
                int beki(int wa,int rr,int warukazu){
                	if(rr==0) return 1%warukazu;
                	if(rr==1) return wa%warukazu;
                	wa%=warukazu;
                	if(rr%2==1) return ((ll)beki(wa,rr-1,warukazu)*(ll)wa)%warukazu;
                	ll zx=beki(wa,rr/2,warukazu);
                	return (zx*zx)%warukazu;
                }

                int pr[10];
                int inv[10];

    			int comb(int nn,int rr){
    				if(rr<0 || rr>nn || nn<0) return 0;
    				int r=pr[nn]*inv[rr];
    				r%=mod;
    				r*=inv[nn-rr];
    				r%=mod;
    				return r;
    			}

                void gya(int ert){
                	pr[0]=1;
                	for(int i=1;i<=ert;i++){
                		pr[i]=((ll)pr[i-1]*i)%mod;
                	}
                		inv[ert]=beki(pr[ert],mod-2,mod);
                	for(int i=ert-1;i>=0;i--){
                		inv[i]=(ll)inv[i+1]*(i+1)%mod;
                	}
                }

              //   cin.tie(0);
    		//	ios::sync_with_stdio(false);
    			//priority_queue<pa3,vector<pa3>,greater<pa3>> pq;
                 //sort(ve.begin(),ve.end(),greater<int>());
 //   mt19937(clock_per_sec);
  //  mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) ;

signed main(){
//	cin.tie(0);
//	ios::sync_with_stdio(false);

	int a[4];
	cin>>a[1]>>a[2]>>a[3];
	cout<<"First"<<endl;
	while(1){
			int ma=max({a[1],a[2],a[3]});
			int mi=min({a[1],a[2],a[3]});
		int med=a[1]+a[2]+a[3]-ma-mi;
		cout<<2*ma-mi-med<<endl;
		int y;
		cin>>y;
		if(y==0)return 0;
		a[y]+=2*ma-mi-med;
	}
	return 0;
 }


#include<bits/stdc++.h>

typedef long long ll;
using namespace std;

#define pb push_back
#define pll pair<ll,ll >
#define sz(x) (x).size()
#define all(x) (x).begin(), (x).end()
#define endln '\n'
#define se second
#define fi first
#define cont continue
#define sqr(x) (x) * (x)

const ll Inf = 1e10;
const ll MaxN = 5e5 + 5;
const ll md = 998244353;

ll binpow(ll n, ll m, ll mod = md) {
	ll Res = 1;

	while (m) {
		if (m & 1) {
			Res *= n;
			Res %= mod;
		}
		n *= n;
		n %= mod;
		m >>= 1;
	}
	return Res;
}

int main() {

#ifdef LOCAL
	//ifstream cin("input.txt");
	//ofstream cout("output.txt");
#else

#endif // DEBUG

	ios_base::sync_with_stdio(0);
	cin.tie();
	cout.tie();

	ll At[3];
	cin >> At[0] >> At[1] >> At[2];
	cout << "First" << endl;
	while(1){
		ll Mx = max_element(At, At + 3) - At;
		ll Mn = min_element(At, At + 3) - At;
		ll t = 0;
		if (t == Mx) t++;
		if (t == Mn) t++;
		if (t == Mx) t++;
		ll k = At[Mx] * 2;
		if (Mx != 0) k -= At[0];
		if (Mx != 1) k -= At[1];
		if (Mx != 2) k -= At[2];

		cout << k << endl;

		ll a;
		cin >> a;
		a--;
		At[a] += k;
		if (a != Mx) {
			if (a!= Mn) {
				cout << At[Mx] - At[Mn] << endl;
			}
			else {
				cout << At[Mx] - At[t] << endl;
			}
			break;

		}
	}

	return 0;
}


#include<bits/stdc++.h>

typedef long long ll;
using namespace std;

#define pb push_back
#define pll pair<ll,ll >
#define sz(x) (x).size()
#define all(x) (x).begin(), (x).end()
#define endln '\n'
#define se second
#define fi first
#define cont continue
#define sqr(x) (x) * (x)

const ll Inf = 1e10;
const ll MaxN = 5e5 + 5;
const ll md = 998244353;

ll binpow(ll n, ll m, ll mod = md) {
	ll Res = 1;

	while (m) {
		if (m & 1) {
			Res *= n;
			Res %= mod;
		}
		n *= n;
		n %= mod;
		m >>= 1;
	}
	return Res;
}

int main() {

#ifdef LOCAL
	//ifstream cin("input.txt");
	//ofstream cout("output.txt");
#else

#endif // DEBUG

	ios_base::sync_with_stdio(0);
	cin.tie();
	cout.tie();

	ll At[3];
	cin >> At[0] >> At[1] >> At[2];
	while(1){
		ll Mx = max_element(At, At + 3) - At;
		ll k = At[Mx] * 2;
		if (Mx != 0) k -= At[0];
		if (Mx != 1) k -= At[1];
		if (Mx != 2) k -= At[2];

		cout << "First " << k << endl;

		ll a;
		cin >> a;
		a--;
		At[a] += k;
		if (a != Mx) {
			if (a == 1) {
				cout << At[Mx] - At[0] << endl;
			}
			else {
				cout << At[Mx] - At[1] << endl;
			}
			break;

		}
	}

	return 0;
}


#include<bits/stdc++.h>

typedef long long ll;
using namespace std;

#define pb push_back
#define pll pair<ll,ll >
#define sz(x) (x).size()
#define all(x) (x).begin(), (x).end()
#define endln '\n'
#define se second
#define fi first
#define cont continue
#define sqr(x) (x) * (x)

const ll Inf = 1e10;
const ll MaxN = 5e5 + 5;
const ll md = 998244353;

ll binpow(ll n, ll m, ll mod = md) {
	ll Res = 1;

	while (m) {
		if (m & 1) {
			Res *= n;
			Res %= mod;
		}
		n *= n;
		n %= mod;
		m >>= 1;
	}
	return Res;
}

int main() {

#ifdef LOCAL
	//ifstream cin("input.txt");
	//ofstream cout("output.txt");
#else

#endif // DEBUG

	ios_base::sync_with_stdio(0);
	cin.tie();
	cout.tie();

	ll At[3];
	cin >> At[0] >> At[1] >> At[2];
	cout << "First" << endl;
	while(1){
		ll Mx = max_element(At, At + 3) - At;
		ll Mn = min_element(At, At + 3) - At;
		ll t = 0;
		if (t == Mx) t++;
		if (t == Mn) t++;
		ll k = At[Mx] * 2;
		if (Mx != 0) k -= At[0];
		if (Mx != 1) k -= At[1];
		if (Mx != 2) k -= At[2];

		cout << k << endl;

		ll a;
		cin >> a;
		a--;
		At[a] += k;
		if (a != Mx) {
			if (a!= Mn) {
				cout << At[Mx] - At[Mn] << endl;
			}
			else {
				cout << At[Mx] - At[t] << endl;
			}
			break;

		}
	}

	return 0;
}


#include<bits/stdc++.h>

typedef long long ll;
using namespace std;

#define pb push_back
#define pll pair<ll,ll >
#define sz(x) (x).size()
#define all(x) (x).begin(), (x).end()
#define endln '\n'
#define se second
#define fi first
#define cont continue
#define sqr(x) (x) * (x)

const ll Inf = 1e10;
const ll MaxN = 5e5 + 5;
const ll md = 998244353;

ll binpow(ll n, ll m, ll mod = md) {
	ll Res = 1;

	while (m) {
		if (m & 1) {
			Res *= n;
			Res %= mod;
		}
		n *= n;
		n %= mod;
		m >>= 1;
	}
	return Res;
}

int main() {

#ifdef LOCAL
	//ifstream cin("input.txt");
	//ofstream cout("output.txt");
#else

#endif // DEBUG

	ios_base::sync_with_stdio(0);
	cin.tie();
	cout.tie();

	ll At[3];
	cin >> At[0] >> At[1] >> At[2];
	cout << "First" << endl;
	while(1){
		ll Mx = max_element(At, At + 3) - At;
		ll Mn = min_element(At, At + 3) - At;
		ll k = At[Mx] * 2;
		if (Mx != 0) k -= At[0];
		if (Mx != 1) k -= At[1];
		if (Mx != 2) k -= At[2];

		cout << k << endl;

		ll a;
		cin >> a;
		a--;
		At[a] += k;
		if (a != Mx) {
			if (a!= Mn) {
				cout << At[Mx] - At[0] << endl;
			}
			else {
				cout << At[Mx] - At[1] << endl;
			}
			break;

		}
	}

	return 0;
}


#include<bits/stdc++.h>

typedef long long ll;
using namespace std;

#define pb push_back
#define pll pair<ll,ll >
#define sz(x) (x).size()
#define all(x) (x).begin(), (x).end()
#define endln '\n'
#define se second
#define fi first
#define cont continue
#define sqr(x) (x) * (x)

const ll Inf = 1e10;
const ll MaxN = 5e5 + 5;
const ll md = 998244353;

ll binpow(ll n, ll m, ll mod = md) {
	ll Res = 1;

	while (m) {
		if (m & 1) {
			Res *= n;
			Res %= mod;
		}
		n *= n;
		n %= mod;
		m >>= 1;
	}
	return Res;
}

int main() {

#ifdef LOCAL
	//ifstream cin("input.txt");
	//ofstream cout("output.txt");
#else

#endif // DEBUG

	ios_base::sync_with_stdio(0);
	cin.tie();
	cout.tie();

	ll At[3];
	cin >> At[0] >> At[1] >> At[2];
	while(1){
		ll Mx = max_element(At, At + 3) - At;
		ll k = At[Mx] * 2;
		if (Mx != 0) k -= At[0];
		if (Mx != 1) k -= At[1];
		if (Mx != 2) k -= At[2];

		cout << "First"<<endl << k << endl;

		ll a;
		cin >> a;
		a--;
		At[a] += k;
		if (a != Mx) {
			if (a == 1) {
				cout << At[Mx] - At[0] << endl;
			}
			else {
				cout << At[Mx] - At[1] << endl;
			}
			break;

		}
	}

	return 0;
}


#include<bits/stdc++.h>

typedef long long ll;
using namespace std;

#define pb push_back
#define pll pair<ll,ll >
#define sz(x) (x).size()
#define all(x) (x).begin(), (x).end()
#define endln '\n'
#define se second
#define fi first
#define cont continue
#define sqr(x) (x) * (x)

const ll Inf = 1e10;
const ll MaxN = 5e5 + 5;
const ll md = 998244353;

ll binpow(ll n, ll m, ll mod = md) {
	ll Res = 1;

	while (m) {
		if (m & 1) {
			Res *= n;
			Res %= mod;
		}
		n *= n;
		n %= mod;
		m >>= 1;
	}
	return Res;
}

int main() {

#ifdef LOCAL
	//ifstream cin("input.txt");
	//ofstream cout("output.txt");
#else

#endif // DEBUG

	ios_base::sync_with_stdio(0);
	cin.tie();
	cout.tie();

	ll At[3];
	cin >> At[0] >> At[1] >> At[2];
	cout << "First" << endl;
	while(1){
		ll Mx = max_element(At, At + 3) - At;
		ll k = At[Mx] * 2;
		if (Mx != 0) k -= At[0];
		if (Mx != 1) k -= At[1];
		if (Mx != 2) k -= At[2];

		cout << k << endl;

		ll a;
		cin >> a;
		a--;
		At[a] += k;
		if (a != Mx) {
			if (a == 1) {
				cout << At[Mx] - At[0] << endl;
			}
			else {
				cout << At[Mx] - At[1] << endl;
			}
			break;

		}
	}

	return 0;
}