#include <bits/stdc++.h>
using namespace std;
const int N = 300010;
int a[N], f[N][21], la[21];
int main() {
  int n, q;
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    for (int j = 0; j <= 18; j++)
      if (!(a[i] & (1 << j)))
        for (int k = 0; k <= 18; k++)
          if (a[i] & (1 << k)) f[i][j] = max(f[i][j], f[la[k]][j]);
    for (int j = 0; j <= 18; j++)
      if (a[i] & (1 << j)) f[i][j] = i, la[j] = i;
  }
  for (int i = 1; i <= q; i++) {
    int l, r;
    scanf("%d%d", &l, &r);
    bool flag = false;
    for (int j = 0; j <= 18; j++)
      if ((a[l] & (1 << j)) && f[r][j] >= l) flag = true;
    if (flag)
      printf("Shi\n");
    else
      printf("Fou\n");
  }
  return 0;
}
