There is a binary string a of length n. In one operation, you can select any prefix of a with an equal number of 0 and 1 symbols. Then all symbols in the prefix are inverted: each 0 becomes 1 and each 1 becomes 0.

For example, suppose a=0111010000. 

  * In the first operation, we can select the prefix of length 8 since it has four 0's and four 1's: [01110100]00→ [10001011]00. 
  * In the second operation, we can select the prefix of length 2 since it has one 0 and one 1: [10]00101100→ [01]00101100. 
  * It is illegal to select the prefix of length 4 for the third operation, because it has three 0's and one 1. 



Can you transform the string a into the string b using some finite number of operations (possibly, none)?

Input

The first line contains a single integer t (1≤ t≤ 10^4) — the number of test cases.

The first line of each test case contains a single integer n (1≤ n≤ 3⋅ 10^5) — the length of the strings a and b.

The following two lines contain strings a and b of length n, consisting of symbols 0 and 1.

The sum of n across all test cases does not exceed 3⋅ 10^5.

Output

For each test case, output "YES" if it is possible to transform a into b, or "NO" if it is impossible. You can print each letter in any case (upper or lower).

Example

Input


5
10
0111010000
0100101100
4
0000
0000
3
001
000
12
010101010101
100110011010
6
000111
110100


Output


YES
YES
NO
YES
NO

Note

The first test case is shown in the statement.

In the second test case, we transform a into b by using zero operations.

In the third test case, there is no legal operation, so it is impossible to transform a into b.

In the fourth test case, here is one such transformation: 

  * Select the length 2 prefix to get 100101010101. 
  * Select the length 12 prefix to get 011010101010. 
  * Select the length 8 prefix to get 100101011010. 
  * Select the length 4 prefix to get 011001011010. 
  * Select the length 6 prefix to get 100110011010. 



In the fifth test case, the only legal operation is to transform a into 111000. From there, the only legal operation is to return to the string we started with, so we cannot transform a into b.
from os import path
import sys,time
mod = int(1e9 + 7)
# import re
from math import ceil, floor,gcd,log,log2 ,factorial
from collections import defaultdict ,Counter , OrderedDict , deque
# from itertools import combinations
# from string import ascii_lowercase ,ascii_uppercase
from heapq import heapify , heappush , heappop
from bisect import *
# from functools import reduce
from operator import mul
maxx = float('inf')
#----------------------------INPUT FUNCTIONS------------------------------------------#
I = lambda :int(sys.stdin.buffer.readline())
tup= lambda : map(int , sys.stdin.buffer.readline().split())
lint = lambda :[int(x) for x in sys.stdin.buffer.readline().split()]
S = lambda: sys.stdin.readline().strip('\n')
grid = lambda  r :[lint() for i in range(r)]
stpr = lambda x : sys.stdout.write(f'{x}' + '\n')
star = lambda x: print(' '.join(map(str, x)))
localsys = 0
start_time = time.time()
if (path.exists('input.txt')):
    localsys = 1;sys.stdin=open('input.txt','r');sys.stdout=open('output.txt','w');
#left shift --- num*(2**k) --(k - shift)
input = sys.stdin.readline
for _ in range(int(input())):
    n = int(input())
    a = input().strip()
    b = input().strip()
    if n % 2 and a[-1] != b[-1]:print('NO'); continue
    if a == b:print('YES');continue
    tot, l , z , o, cnt  = 0 ,[], 0 ,0 , 0
    a = list(a) ; b = list(b)
    for i in range(n):
        if a[i] =='0':
            z+=1
        else:
            o+=1
        if a[i] != b[i]:
            cnt+=1
        if z == o :
            l.append([i,cnt])
            if cnt :
                tot+=1
                cnt =0
    N = len(l)
    if N == 1:
        if l[0][1] == 0 :
            pass
        else:
            for j in range(l[0][0] +1 ):
                if a[j] == '1':
                    a[j] = '0'
                else:
                    a[j] = '1'
        print('YES') if a== b else print('NO')
        continue
    prev =0
    for i in range(N):
        if tot > 0 and l[i][1]:
            for j in range(prev , l[i][0]+1):
                if a[j] == '1':
                    a[j] ='0'
                else:
                    a[j] = '1'
            tot-=1
        # print(a, i ,tot - i)
        prev = l[i][0] +1 
    # print(a)
    # print(b)
    print('YES') if a== b else print('NO')



    # print(l,tot)



if localsys:
    print("\n\n\nTime Elased :",time.time() - start_time,"seconds")