#include <bits/stdc++.h>
template <typename T>
constexpr auto hasBegin(int) -> decltype(std::begin(std::declval<T>()), true) {
  return true;
}
constexpr bool hasBegin(...) { return false; }
template <typename T>
using IsContainer = std::integral_constant<bool, hasBegin<T>(0)>;
template <class X, class Y>
std::ostream &operator<<(std::ostream &os, std::pair<X, Y> const &p) {
  return os << p.first << " " << p.second;
}
template <class Ch, class Tr, class Container>
std::basic_ostream<Ch, Tr> &operator<<(std::basic_ostream<Ch, Tr> &os,
                                       Container const &x) {
  bool first = true;
  for (auto &y : x) {
    if (first) {
      first = false;
    } else {
      os << " ";
    }
    os << y;
  }
  return os;
}
using namespace std;
class CWizardsAndNumbers {
  void solve(int testNumber, istream &in, ostream &out) {
    long long a, b;
    in >> a >> b;
    if (a < b) {
      swap(a, b);
    }
    bool res = f(a, b);
    out << (res ? "First" : "Second") << "\n";
  }
  bool f(long long a, long long b) {
    if (b == 0) {
      return false;
    }
    bool next = f(b, a % b);
    if (not next) {
      return true;
    }
    long long d = (a - a % b) / b;
    if (b % 2) {
      return d % 2 == 0;
    }
    return d % (b + 1) % 2 == 0;
  }

 public:
  void solve(std::istream &in, std::ostream &out) {
    int t;
    in >> t;
    for (int i = 1; i <= t; ++i) {
      solve(i, in, out);
    }
  }
  void setup() {}
};
int main() {
  std::ios_base::sync_with_stdio(false);
  CWizardsAndNumbers solver;
  solver.setup();
  std::istream &in(std::cin);
  std::ostream &out(std::cout);
  in.tie(nullptr);
  out << std::fixed;
  out.precision(20);
  solver.solve(in, out);
  return 0;
}
