#include <bits/stdc++.h>
using namespace std;
const long long LINF = 0x3f3f3f3f3f3f3f3f;
const long long NLINF = 0xf7f7f7f7f7f7f7f7;
const int INF = 0x3f3f3f3f, NINF = 0xf7f7f7f7;
const int MOD1 = 1e9 + 7, MOD2 = 1e9 + 9;
const int N = 3e5 + 10, M = 20;
int n, q, a[N], dp[N][M], lst[M];
int main() {
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  for (int i = 0; i < M; i++) lst[i] = n + 1;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < M; j++) dp[i][j] = n + 1;
  for (int i = n; i > 0; i--) {
    for (int j = 0; j < M; j++)
      if (a[i] & (1 << j)) {
        int p = lst[j];
        if (p <= n) {
          dp[i][j] = min(dp[i][j], p);
          for (int k = 0; k < M; k++) dp[i][k] = min(dp[i][k], dp[p][k]);
        }
        lst[j] = i;
      }
  }
  for (int i = 0, x, y; i < q; i++) {
    bool ok = 0;
    scanf("%d%d", &x, &y);
    for (int j = 0; j < M; j++)
      if (a[y] & (1 << j)) ok |= (dp[x][j] <= y);
    printf(ok ? "Shi\n" : "Fou\n");
  }
}
