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.
import sys 
from collections import defaultdict as dd
from collections import Counter as cc
from queue import Queue
import math
import itertools
import functools
from operator import ixor
from decimal import Decimal
try:
    sys.stdin = open('input.txt', 'r') 
    sys.stdout = open('output.txt', 'w')
except:
    pass
# input = lambda: sys.stdin.readline().rstrip()



for _ in range(int(input())):
	n=int(input())
	a=input()
	b=input()
	g=n
	for i in range(n-1,-1,-1):
		if a[i]==b[i]:
			g-=1
		else:
			break
	n=g
	a=a[:g]
	b=b[:g]
	e=[0]*n
	z=0
	x=0
	h=0
	if g==0:
		print('YES')
		continue
	l=abs(int(a[0])-int(b[0]))
	for i in range(n):
		if a[i]==b[i] and l==0:
			pass
		elif a[i]!=b[i] and l==1:
			pass
		else:
			if z==x:
				e[i-1]=1
				l=1-l
			else:
				e[i-1]=-1
				h=-1
				break
		if a[i]=='1':
			z+=1
		else:
			x+=1
	if h==-1 or z!=x:
		print('NO')
	else:
		e=e[::-1]
		a=a[::-1]
		b=b[::-1]
		k=0
		if n%2==0:
			q=0
		else:
			q=1
		if (q==1 and a[0]==b[0]) or q==0:
			for i in range(q,n,2):
				if (a[i]==b[i] and a[i+1]==b[i+1]) or (a[i]!=b[i] and a[i+1]!=b[i+1]):
					continue
				else:
					q=-1
					break
			if q==-1 or h==-1:
				print('NO')
			else:
				print('YES')
		else:
			print('NO')