Bob just learned about bitwise operators. Since Alice is an expert, she decided to play a game, she will give a number $x$ to Bob and will ask some questions:
There will be 4 different kinds of queries:-
- 
Alice gives an integer $i$ and Bob has to report the status of the $i^{th}$ bit in $x$, the answer is $"ON"$ if it is on else $"OFF"$.
- 
Alice gives an integer $i$ and Bob has to turn on the $i^{th}$ bit in $x$.
- 
Alice gives an integer $i$ and Bob has to turn off the $i^{th}$ bit in $x$.
- 
Alice gives two integers $p$ and $q$ and in the binary representation of $x$ Bob has to swap the $p^{th}$ and the $q^{th}$ bits.
The value of $x$ changes after any update operation.
positions $i$, $p$, and $q$ are always counted from the right or from the least significant bit.
If anyone of $i$, $p$, or $q$ is greater than the number of bits in the binary representation of $x$, consider $0$ at that position.

-----Input:-----
- First-line will contain $T$, the number of test cases. Then the test cases follow. 
- the first line of each test case contains two space-separated integers $x, Q$.
- $2Q$ lines follow.
- first line is an integer, the query type.
- for each query of type 1 to 3, there will be the integer $i$
- for the query of type 4, there will be two space-separated integers, the integers $p, q$

-----Output:-----
For the queries of the first kind, print $"ON"$ or $"OFF"$.

-----Constraints-----
- $1 \leq T \leq 10^3$
- $1 \leq x \leq 10^9$
- $1 \leq Q \leq 10^3$
- $1 \leq i,p,q \leq 30$

-----Sample Input-----
1
2 2
2 
1
1 
1

-----Sample Output:-----
ON

-----EXPLANATION:-----
the binary representation of 2 is 10
for query 1, we just have to update x to 11 (or 3 in decimal).
for the next query, x is now 3 or 11 in binary so the answer is ON.

Difficulty: interview

Starter code:

Solutions:
# cook your dish here
t=int(input())
while t>0:
    n,q=list(map(int,input().split()))
    blst=[0]
    for i in range(1,65):
        blst.append(0)
    i=1
    while n>0:
        if n%2:
            blst[i]=1
        n//=2
        i+=1
    while q>0:
        n=int(input())
        if n==1:
            p=int(input())
            if blst[p]:
                print('ON')
            else:
                print('OFF')
        elif n==2:
            p=int(input())
            if blst[p]==0:
                blst[p]=1
        elif n==3:
            p=int(input())
            if blst[p]==1:
                blst[p]=0
        else:
            p,r=list(map(int,input().split()))
            if blst[p]!=blst[r]:
                blst[p]+=1
                blst[p]%=2
                blst[r]+=1
                blst[r]%=2
        q-=1
    t-=1


for _ in range(int(input())):
    N,X=list(map(int,input().split()))
    string=[]
    while N//2!=0:
        string.append(N%2)
        N=N//2
    string.append(1)
    for _ in range(X):
        p=int(input())
        if p==1:
            i=int(input())
            if i-1<len(string):
                if (string[i-1]==1):
                    print("ON")
                    continue
                else:
                    print("OFF")
                    continue
            else:
                print("OFF")
                continue
        elif p==2:
            i =int(input())
            if i > len(string):
                x=i-len(string)
                for _ in range(x):
                    string.append(0)
                string[len(string)-1]=1
                continue
            else:
                string[i-1]=1
                continue
        elif p==3:
            i =int(input())
            if i > len(string):
                x=i-len(string)
                for _ in range(x):
                    string.append(0)
                continue
            else:
                string[i-1]=0
                continue
        else:
            j,k=list(map(int,input().split()))
            if j>len(string) or k >len(string):
                x=max(j,k)-len(string)
                for _ in range(x):
                    string.append(0)
                string[j-1],string[k-1]=string[k-1],string[j-1]
                continue
            else:
                string[j-1],string[k-1]=string[k-1],string[j-1]
                
        
                  
                
            
        


# cook your dish here
t = int(input())
while t:
    t -= 1
    b,k = list(map(int, input().split()))
    x = bin(b)[2:]
    n = len(x)
    for j in range(k):
        qu = int(input())
        if 1<=qu<=3:
            i = int(input())
            if qu==1:
                if i<=n:
                    r = n-i+1
                    if x[r-1]=='0':
                        print("OFF")
                    else:
                        print("ON")
                else:
                    print("OFF")
            elif qu==2:
                if i<=n:
                    r = n-i+1
                    x =x[0:r-1]+'1'+x[r:n]
                else:
                    x = '1' + (i-n-1)*'0' + x
                    n=i
            elif qu==3:
                if i<=n:
                    r = n-i+1
                    x =x[0:r-1]+'0'+x[r:n]
                    
                    
        else:
            p,q = list(map(int, input().split()))
            if p<=n and q<=n:
                r1 = n-p + 1
                r2 = n-q+1
                t1 = x[r1-1]
                t2 = x[r2-1]
                if x[r2-1]!=t1:
                    x = x[0:r2-1] + t1 + x[r2:n]
                if x[r1-1]!=t2:
                    x = x[0:r1-1]+t2+x[r1:n]
                
            elif p<=n:
                r1 = n-p+1
                p1 = x[r1-1]
                x =x[0:r1-1]+'0'+x[r1:n]
                if p1=='1':
                    x = '1'+(q-n-1)*'0' + x
                    n = q
            elif q<=n:
                r2 = n-q+1
                p2 = x[r2-1]
                x =x[0:r2-1]+'0'+x[r2:n]
                if p2=='1':
                    x = '1'+(p-n-1)*'0' + x
                    n=p
        


t = int(input())
while t:
    t -= 1
    b,k = list(map(int, input().split()))
    x = bin(b)[2:]
    n = len(x)
    for j in range(k):
        qu = int(input())
        if 1<=qu<=3:
            i = int(input())
            if qu==1:
                if i<=n:
                    r = n-i+1
                    if x[r-1]=='0':
                        print("OFF")
                    else:
                        print("ON")
                else:
                    print("OFF")
            elif qu==2:
                if i<=n:
                    r = n-i+1
                    x =x[0:r-1]+'1'+x[r:n]
                else:
                    x = '1' + (i-n-1)*'0' + x
                    n=i
            elif qu==3:
                if i<=n:
                    r = n-i+1
                    x =x[0:r-1]+'0'+x[r:n]
                    
                    
        else:
            p,q = list(map(int, input().split()))
            if p<=n and q<=n:
                r1 = n-p + 1
                r2 = n-q+1
                t1 = x[r1-1]
                t2 = x[r2-1]
                if x[r2-1]!=t1:
                    x = x[0:r2-1] + t1 + x[r2:n]
                if x[r1-1]!=t2:
                    x = x[0:r1-1]+t2+x[r1:n]
                
            elif p<=n:
                r1 = n-p+1
                p1 = x[r1-1]
                x =x[0:r1-1]+'0'+x[r1:n]
                if p1=='1':
                    x = '1'+(q-n-1)*'0' + x
                    n = q
            elif q<=n:
                r2 = n-q+1
                p2 = x[r2-1]
                x =x[0:r2-1]+'0'+x[r2:n]
                if p2=='1':
                    x = '1'+(p-n-1)*'0' + x
                    n=p
        


# cook your dish here
t = int(input())
for _ in range(t):
    b,k = list(map(int, input().split()))
    x = bin(b)[2:]
    n = len(x)
    for j in range(k):
        qu = int(input())
        if 1<=qu<=3:
            i = int(input())
            if qu==1:
                if i<=n:
                    r = n-i+1
                    if x[r-1]=='0':
                        print("OFF")
                    else:
                        print("ON")
                else:
                    print("OFF")
            elif qu==2:
                if i<=n:
                    r = n-i+1
                    x =x[0:r-1]+'1'+x[r:n]
                else:
                    x = '1' + (i-n-1)*'0' + x
                    n=i
            elif qu==3:
                if i<=n:
                    r = n-i+1
                    x =x[0:r-1]+'0'+x[r:n]
                    
                    
        else:
            p,q = list(map(int, input().split()))
            if p<=n and q<=n:
                r1 = n-p + 1
                r2 = n-q+1
                t1 = x[r1-1]
                t2 = x[r2-1]
                if x[r2-1]!=t1:
                    x = x[0:r2-1] + t1 + x[r2:n]
                if x[r1-1]!=t2:
                    x = x[0:r1-1]+t2+x[r1:n]
                
            elif p<=n:
                r1 = n-p+1
                p1 = x[r1-1]
                x =x[0:r1-1]+'0'+x[r1:n]
                if p1=='1':
                    x = '1'+(q-n-1)*'0' + x
                    n = q
            elif q<=n:
                r2 = n-q+1
                p2 = x[r2-1]
                x =x[0:r2-1]+'0'+x[r2:n]
                if p2=='1':
                    x = '1'+(p-n-1)*'0' + x
                    n=p


n=int(input())
for i in range(0,n):
    o=input().rstrip().split(' ')
    q=int(o[1])
    x=int(o[0])
    t=list(str(bin(x)))
    del(t[0])
    del(t[0])
    while(len(t)<30):
        t.insert(0,'0');
    # print(t)
    t.reverse();
    for j in range(0,q):
        o=int(input())
        if o==1:
            p=int(input())
            if int(t[p-1])==0:
                print("OFF")
            else:
                print("ON")
        elif o==2:
            p=int(input())
            t[p-1]=1;
        elif o==3:
            p=int(input())
            t[p-1]=0;            
        else:
            E=input().rstrip().split(' ')
            A=int(E[0])
            B=int(E[1])
            temp=t[A-1]
            t[A-1]=t[B-1]
            t[B-1]=temp;

def make_31(string):
    if len(string) < 31:
        string = (31- len(string)) * '0' + string

    return string

for _ in range(int(input())):
    x, Q = list(map(int, input().split()))
    b = make_31(bin(x)[2:])
    b = list(b.strip())
    for qqq in range(Q):
        query = int(input())
        if query == 1:
            p = int(input())
            print('ON' if b[31-p] == '1' else 'OFF')
        elif query == 2:
            p = int(input())
            b[31-p] = '1'
        elif query == 3:
            p = int(input())
            b[31 - p] = '0'
        else:
            p, q = list(map(int, input().split()))
            temp = b[31 - q]
            b[31 - q] = b[31 - p]
            b[31 - p] = temp
        



# cook your dish here
for _ in range(int(input())):
    a=[0 for i in range(32)]
    m,n=list(map(int,input().split()))
    k=0
    while m!=0:
        a[k]=m%2
        k+=1
        m=m//2
    for i in range(n):
        c=int(input())
        
        if c==4:
            p,q=list(map(int,input().split()))
            a[p-1],a[q-1]=a[q-1],a[p-1]
        if c==1:
            d=int(input())
            if a[d-1]==1:
                print("ON")
            else:
                print("OFF")
        
        if c==2:
            d=int(input())
            a[d-1]=1
        if c==3:
            d=int(input())
            a[d-1]=0


for _ in range(int(input())):
    x, q = list(map(int, input().split()))

    for _ in range(q):
        f = int(input())

        if f == 1:
            i = int(input()) - 1

            if (x >> i) & 1:
                print('ON')
            else:
                print('OFF')

        elif f == 2:
            i = int(input()) - 1
            if not ((x >> i) & 1):
                x ^= 1 << i

        elif f == 3:
            i = int(input()) - 1
            if (x >> i) & 1:
                x ^= 1 << i

        elif f == 4:
            p, q = list(map(int, input().split()))
            p -= 1
            q -= 1

            ox = x

            x -= ((ox >> p) & 1) * (1 << p)
            x += ((ox >> q) & 1) * (1 << p)
            x -= ((ox >> q) & 1) * (1 << q)
            x += ((ox >> p) & 1) * (1 << q)


from sys import stdin, stdout, maxsize
from math import sqrt, log, factorial, gcd
from collections import defaultdict as D
from bisect import insort

for _ in range(int(input())):
    x, q = map(int, input().split())
    b = list(bin(x))
    b = b[2:]
    b = b[::-1]
    b.insert(0, '0')
    d = D(lambda: 0)
    l = len(b)
    for i in range(l):
        d[i] = b[i]
    for i in range(q):
        t = int(input())
        if t <= 3:
            x = int(input())
            if t == 1:
                if d[x] == '1': print("ON")
                else: print("OFF")
            elif t == 2:
                d[x] = "1"
            else:
                d[x] = "0"
        else:
            p, q = map(int, input().split())
            d[p], d[q] = d[q], d[p]