50 50 50 50
 49 49 4 1
 48 50 12 11
 5 7 1 10
 1 50 50 50
 5 7 1 4
 32 4 17 3
 1 50 1 50
 50 1 1 1
 32 31 10 9
 5 7 4 1
 49 49 3 3
 50 49 1 2
 50 48 3 1
 50 1 1 50
 5 7 10 10
 1 1 1 1
 49 50 11 12

Second
 Second
 Second
 Second
 Second
 Second
 First
 Second
 First
 First
 Second
 Second
 First
 First
 First
 Second
 Second
 Second

#include <bits/stdc++.h>
using namespace std;
long long for_binarySearch(long long a, long long b, long long aa[],
                           long long x) {
  while (a <= b) {
    long long mid = (a + b) / 2;
    if (aa[mid] == x)
      return 1;
    else if (aa[mid] > x)
      b = mid - 1;
    else
      a = mid + 1;
  }
  return -1;
}
long long for_gcd(long long a, long long b) {
  if (a == 0)
    return b;
  else
    return for_gcd(b % a, a);
}
long long for_prime(long long x) {
  for (long long i = 2; i * i <= x; i++) {
    if (x % i == 0) return 0;
  }
  return 1;
}
void for_swap(char *x, char *y) {
  char temp;
  temp = *x;
  *x = *y;
  *y = temp;
}
long long for_big_mod(long long b, long long p, long long m) {
  if (p == 0)
    return 1;
  else if (p % 2 == 0) {
    long long k = for_big_mod(b, p / 2, m);
    return (k * k) % m;
  } else
    return ((b % m) * (for_big_mod(b, p - 1, m))) % m;
}
long long for_josephus(long long n, long long k) {
  if (n == 1) return 1;
  return (for_josephus(n - 1, k) + k - 1) % n + 1;
}
long long for_gcdExtended(long long a, long long b, long long *x,
                          long long *y) {
  if (a == 0) {
    *x = 0;
    *y = 1;
    return b;
  }
  long long x1, y1;
  long long gcd = for_gcdExtended(b % a, a, &x1, &y1);
  *x = y1 - (b / a) * x1;
  *y = x1;
  return gcd;
}
vector<long long> v1[100005];
bool vis[100005];
bool vis1[100005];
int main() {
  long long n1, n2, k1, k2;
  cin >> n1 >> n2 >> k1 >> k2;
  long long p = n1 + k1;
  long long q = n2 + k2;
  if (p >= q)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  return 0;
}
