n,q = map(int,input().split()) a = list(map(int,input().split())) qs = [list(map(int,input().split())) for i in range(q)] seg_len = 1<<19 # > 5*(10**5) seg = [0]*(2*seg_len) # 必要に応じて初期状態構築 for i in range(n): if a[i] != 1: seg[seg_len+i+1] = 1 for i in range(seg_len)[::-1]: seg[i] = seg[i*2]+ seg[i*2+1] def update(pos,x): pos += seg_len seg[pos] = x while True: pos >>= 1 if not pos: break seg[pos] = seg[pos<<1] + seg[pos<<1|1] def get_query(l,r): l += seg_len; r += seg_len res = 0 while l < r: if l & 1: res += seg[l] l += 1 if r & 1: r -= 1 res += seg[r] l >>= 1; r >>= 1 return res for t,x,y in qs: if t == 1: if y == 1: update(x,0) else: update(x,1) else: tmp = get_query(x,y+1) ln = y-x+1 if tmp == 0: if ln % 2 == 1: print("F") else: print("S") else: l = x r = y+1 while r-l > 1: m = (r+l)//2 p = get_query(m,y+1) if p >= 1: l = m else: r = m if (y - l) % 2 == 0: print("F") else: print("S")