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 java.util.*;
 
 
 
import java.io.*;
 
/* Name of the class has to be "Main" only if the class is public. */
public class hacker
{
    public static void main (String[] args) throws java.lang.Exception
    { 
        Scanner sc = new Scanner(System.in);

        int t=sc.nextInt();
        PrintWriter out=new PrintWriter(System.out);
        Set<Integer> st=new HashSet<Integer>();
        
        int i,j,x=0,y=0,n=2,m,k;
        int d;
        int c=0,c1=0,count=0;
        long sum1,sum;
        int min1,min;
        int pos=1;  
        String s,str;
        
        int max=Integer.MIN_VALUE;
        for(;t>0;t--)
        {
        	n=sc.nextInt();
        	s=sc.next();
        	str=sc.next();
        	boolean f=false;
        	c=0;c1=0;count=0;
        	for(i=0;i<n;i++)
        	{
        		if(c1==0)
        		{
        			if(s.charAt(i)==str.charAt(i))
        			{
        				if(s.charAt(i)=='1')
        					count++;
        				else 
        					count--;
        			}
        			else
        			{
        				if(count!=0 || i%2!=0)
        				{
        					f=true;
        					break;
        				}
        				else
        				{
        					c=0;
        					c1=1;
        					count=0;
            				if(s.charAt(i)=='1')
            					count++;
            				else 
            					count--;
        				}
        				
        				
        			}
        		}
        		else
        		{
        			if(s.charAt(i)==str.charAt(i))
        			{
        				if(count!=0 || i%2!=0)
        				{
        					f=true;
        					break;
        				}
        				else
        				{
        					c1=0;
        					count=0;
            				if(s.charAt(i)=='1')
            					count++;
            				else 
            					count--;
        				}
        			}
        			else
        			{

        				if(s.charAt(i)=='1')
        					count++;
        				else 
        					count--;
        			}
        		}
        		//out.print(c1);
        	}
        	if(c1==1 && count!=0)
        		out.println("NO");
    
        	else if(f)
        		out.println("NO");
        	else
        		out.println("YES");
        }
       // out.println(c+" "+n);
        out.close();
    }
}
