func_code_string: #include <bits/stdc++.h>   using namespace std;   int gi() {     char cc = getchar();     int cn = 0, flus = 1;     while (cc <  0  || cc >  9 ) {       if (cc ==  - ) flus = -flus;       cc = getchar();     }     while (cc >=  0  && cc <=  9 ) cn = cn * 10 + cc -  0 , cc = getchar();     return cn * flus;   }   const int N = 3e5 + 5;   int n, q, a[N], g[20], f[N][20];   signed main() {     n = gi(), q = gi();     for (register int i = (1); i <= (n); ++i) a[i] = gi();     for (register int i = (0); i <= (19); ++i) g[i] = n + 1;     memset(f, 63, sizeof(f));     for (register int i = n; i >= 1; --i) {       for (register int j = (0); j <= (19); ++j)         if ((1 << j) & a[i]) f[i][j] = i;       for (register int j = (0); j <= (19); ++j)         if ((1 << j) & a[i])           for (register int k = (0); k <= (19); ++k)             f[i][k] = min(f[i][k], f[g[j]][k]);       for (register int j = (0); j <= (19); ++j)         if ((1 << j) & a[i]) g[j] = i;     }     while (q--) {       int x = gi(), y = gi();       int flag = 0;       for (register int j = (0); j <= (19); ++j)         if ((1 << j) & a[y]) flag |= (f[x][j] <= y);       (flag) ? puts( Shi ) : puts( Fou );     }     return 0;   }   