#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
inline int mymax(int a, int b) { return a < b ? b : a; }
inline int mymin(int a, int b) { return a > b ? b : a; }
inline long long mymax(long long a, long long b) { return a < b ? b : a; }
inline long long mymin(long long a, long long b) { return a > b ? b : a; }
struct state {
  int glue;
  int a, b;
  bool sec;
  state inv() {
    state s;
    s.glue = 0;
    s.a = a;
    s.b = b;
    s.sec = sec;
    for (int i = 0; i < (5); ++i) {
      for (int j = 0; j < (5); ++j) {
        if (glue & (1 << ((a - i) * 5 + (b - j)))) s.glue |= 1 << (i * 5 + j);
      }
    }
    return s;
  }
  bool glud() { return !!(glue & (1 << (a * 5 + b))); }
  bool operator<(const state &s) const {
    return make_pair(make_pair(glue, sec), make_pair(a, b)) <
           make_pair(make_pair(s.glue, s.sec), make_pair(s.a, s.b));
  }
};
map<state, bool> mem;
vector<state> go(state s) {
  vector<state> res;
  if (s.sec) {
    state sss = s;
    sss.sec ^= 1;
    res.push_back(sss);
    for (int i = 0; i < (s.a + 1); ++i) {
      for (int j = 0; j < (s.b + 1); ++j) {
        if (!i && !j || i == s.a && j == s.b) continue;
        state ss = s;
        ss.glue |= 1 << (i * 5 + j);
        ss.sec ^= 1;
        res.push_back(ss);
      }
    }
  } else {
    if (s.a) {
      state ss = s;
      if (!ss.glud()) {
        --ss.a;
        ss.sec ^= 1;
        res.push_back(ss);
      }
      ss = s.inv();
      if (!ss.glud()) {
        --ss.a;
        ss.sec ^= 1;
        res.push_back(ss);
      }
    }
    if (s.b) {
      state ss = s;
      if (!ss.glud()) {
        --ss.b;
        ss.sec ^= 1;
        res.push_back(ss);
      }
      ss = s.inv();
      if (!ss.glud()) {
        --ss.b;
        ss.sec ^= 1;
        res.push_back(ss);
      }
    }
  }
  return res;
}
bool doit(state s) {
  if (mem.count(s)) return mem[s];
  if (!s.a && !s.b) return mem[s] = !s.sec;
  bool r = false;
  vector<state> ss = go(s);
  for (int i = 0; i < ((int)(ss).size()); ++i) {
    if (!doit(ss[i])) {
      r = true;
      break;
    }
  }
  return mem[s] = r;
}
int main() {
  int n, m, x1, y1, x2, y2;
  cin >> n >> m >> x1 >> y1 >> x2 >> y2;
  int a = abs(x1 - x2);
  int b = abs(y1 - y2);
  if (b < a) swap(a, b);
  if (b >= 5 || a == 4 || a == 3 && b == 4)
    cout << "Second";
  else
    cout << "First";
  return 0;
  for (int i = 0; i < (5); ++i) {
    for (int j = 0; j < (5); ++j) {
      state s;
      s.a = i;
      s.b = j;
      s.sec = false;
      s.glue = 0;
      cout << i << " " << j << ": " << doit(s) << endl;
    }
  }
  return 0;
}
