#include <bits/stdc++.h>
using namespace std;
long long gi() {
  char cc = getchar();
  long long cn = 0, flus = 1;
  while (cc < '0' || cc > '9') {
    if (cc == '-') flus = -flus;
    cc = getchar();
  }
  while (cc >= '0' && cc <= '9') cn = cn * 10 + cc - '0', cc = getchar();
  return cn * flus;
}
const long long Inf = 1e10;
const long long N = 10 + 5;
struct node {
  long long w, id;
} a[N];
long long n;
bool cmp(node x, node y) { return x.w < y.w; }
void Get(long long x) {
  cout << x << endl;
  cout.flush();
  long long u;
  cin >> u;
  if (u == 0) exit(0);
  for (register long long i = (1); i <= (3); ++i)
    if (a[i].id == u) a[i].w += x;
  sort(a + 1, a + 4, cmp);
}
long long Mx() { return max(max(a[1].w, a[2].w), a[3].w); }
signed main() {
  a[1].w = gi(), a[2].w = gi(), a[3].w = gi();
  puts("First");
  a[1].id = 1, a[2].id = 2, a[3].id = 3;
  sort(a + 1, a + 4, cmp);
  Get(Inf);
  long long mx = a[3].w;
  Get(mx * 2 - a[1].w - a[2].w);
  Get(a[2].w - a[1].w);
  return 0;
}
