#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5, md = 1e9 + 7, INF = md;
long long a[N];
int dp[N], tree[4 * N];
int q(int cn, int b, int e) {
  if (b == e) {
    return b;
  }
  int lc = 2 * cn, rc = lc + 1, m = (b + e) / 2;
  if (tree[lc] == 0) {
    return q(lc, b, m);
  } else {
    return q(rc, m + 1, e);
  }
}
void upd(int cn, int b, int e, int i, int val) {
  if (b > i or e < i) return;
  if (b == e) {
    tree[cn] += val;
    return;
  }
  int lc = 2 * cn, rc = lc + 1, m = (b + e) / 2;
  upd(lc, b, m, i, val);
  upd(rc, m + 1, e, i, val);
  tree[cn] = min(tree[lc], tree[rc]);
}
int X = 1e6;
vector<long long> fourth;
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
  }
  sort(a + 1, a + n + 1);
  dp[0] = dp[1] = 0;
  upd(1, 0, X, 0, 2);
  for (long long i = 0; i <= 1000; i++) {
    fourth.push_back(i * i * i * i);
  }
  int l = 0, r = 1;
  for (int i = 2; i <= X; i++) {
    int x = lower_bound(fourth.begin(), fourth.end(), i) - fourth.begin(),
        y = (int)sqrt(i);
    while (r < y) {
      r++;
      upd(1, 0, X, dp[r], 1);
    }
    while (l < x) {
      upd(1, 0, X, dp[l], -1);
      l++;
    }
    dp[i] = q(1, 0, X);
  }
  long long XOR = 0;
  memset((tree), 0, sizeof(tree));
  l = -1;
  for (int i = 1; i <= n; i++) {
    if (a[i] <= X) {
      XOR ^= dp[a[i]];
      continue;
    }
    long long x = lower_bound(fourth.begin(), fourth.end(), a[i]) -
                  fourth.begin(),
              y = (long long)sqrtl(a[i]);
    if (l == -1) {
      l = x;
      r = y;
      for (int j = l; j <= r; j++) {
        upd(1, 0, X, dp[j], +1);
      }
    } else {
      while (r < y) {
        r++;
        upd(1, 0, X, dp[r], 1);
      }
      while (l < x) {
        upd(1, 0, X, dp[l], -1);
        l++;
      }
    }
    long long idx = q(1, 0, X);
    XOR = XOR ^ idx;
  }
  if (XOR) {
    cout << "Furlo";
  } else {
    cout << "Rublo";
  }
  return 0;
}
