#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pll pair<ll, ll>
#define umap unordered_map
#define Ff(i, x, y) for(ll i=x;i<y;i++)
#define Fr(i, x, y) for(ll i=x;i>=y;i--)
#define Ffit(it, x) for(auto it=x.begin();it != x.end();it++)
#define Frit(it, x) for(auto it=x.rbegin();it != x.rend();it++)
#define mem(arr, val) memset(arr, val, sizeof(arr))
#define pb push_back
#define mp make_pair
#define vii vector<int>
#define umii unordered_map<int,int>
#define usi unordered_set<int>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define inf 1e18
#define ps(x,y) fixed<<setprecision(y)<<x
#define mk(arr,n,type)  type *arr=new type[n];
#define I first
#define II second
#define MOD 1000000007
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define test ll t;cin>>t;while(t--)

void c_p_c()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
}

int32_t main()
{
	c_p_c();
	test
	{
    	int x,y,x1=0,x2=0,y1=0,y2=0,flag=0; cin>>x>>y;  string s; cin>>s;
		Ff(i,0,s.size()){
			if(s[i]=='U')y1++;
			else if(s[i]=='D')y2++;
			else if(s[i]=='R')x1++;
			else x2++;
		}
		if(x>=0)
		{
			if(x1>=x)
			{
				if((y>=0 && y1>=y) || (y<=0 && y2>=abs(y)))flag=1;
			}
		}
		else
		{
			if(x2>=abs(x))
			{
				if((y>=0 && y1>=y) || (y<=0 && y2>=abs(y)))flag=1;
			}
		}
		if(flag)cout << "YES\n";
		else cout << "NO\n";
    }
	return 0;
}
### Prompt

Your task is to create a cpp solution to the following problem:

You were dreaming that you are traveling to a planet named Planetforces on your personal spaceship. Unfortunately, its piloting system was corrupted and now you need to fix it in order to reach Planetforces.

<image>

Space can be represented as the XY plane. You are starting at point (0, 0), and Planetforces is located in point (p_x, p_y).

The piloting system of your spaceship follows its list of orders which can be represented as a string s. The system reads s from left to right. Suppose you are at point (x, y) and current order is s_i: 

  * if s_i = U, you move to (x, y + 1); 
  * if s_i = D, you move to (x, y - 1); 
  * if s_i = R, you move to (x + 1, y); 
  * if s_i = L, you move to (x - 1, y). 



Since string s could be corrupted, there is a possibility that you won't reach Planetforces in the end. Fortunately, you can delete some orders from s but you can't change their positions.

Can you delete several orders (possibly, zero) from s in such a way, that you'll reach Planetforces after the system processes all orders?

Input

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

Each test case consists of two lines. The first line in each test case contains two integers p_x and p_y (-10^5 ≤ p_x, p_y ≤ 10^5; (p_x, p_y) ≠ (0, 0)) — the coordinates of Planetforces (p_x, p_y).

The second line contains the string s (1 ≤ |s| ≤ 10^5: |s| is the length of string s) — the list of orders.

It is guaranteed that the sum of |s| over all test cases does not exceed 10^5.

Output

For each test case, print "YES" if you can delete several orders (possibly, zero) from s in such a way, that you'll reach Planetforces. Otherwise, print "NO". You can print each letter in any case (upper or lower).

Example

Input


6
10 5
RRRRRRRRRRUUUUU
1 1
UDDDRLLL
-3 -5
LDLDLDDDR
1 2
LLLLUU
3 -2
RDULRLLDR
-1 6
RUDURUUUUR


Output


YES
YES
YES
NO
YES
NO

Note

In the first case, you don't need to modify s, since the given s will bring you to Planetforces.

In the second case, you can delete orders s_2, s_3, s_4, s_6, s_7 and s_8, so s becomes equal to "UR".

In the third test case, you have to delete order s_9, otherwise, you won't finish in the position of Planetforces.

### Response

```cpp
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pll pair<ll, ll>
#define umap unordered_map
#define Ff(i, x, y) for(ll i=x;i<y;i++)
#define Fr(i, x, y) for(ll i=x;i>=y;i--)
#define Ffit(it, x) for(auto it=x.begin();it != x.end();it++)
#define Frit(it, x) for(auto it=x.rbegin();it != x.rend();it++)
#define mem(arr, val) memset(arr, val, sizeof(arr))
#define pb push_back
#define mp make_pair
#define vii vector<int>
#define umii unordered_map<int,int>
#define usi unordered_set<int>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define inf 1e18
#define ps(x,y) fixed<<setprecision(y)<<x
#define mk(arr,n,type)  type *arr=new type[n];
#define I first
#define II second
#define MOD 1000000007
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define test ll t;cin>>t;while(t--)

void c_p_c()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
}

int32_t main()
{
	c_p_c();
	test
	{
    	int x,y,x1=0,x2=0,y1=0,y2=0,flag=0; cin>>x>>y;  string s; cin>>s;
		Ff(i,0,s.size()){
			if(s[i]=='U')y1++;
			else if(s[i]=='D')y2++;
			else if(s[i]=='R')x1++;
			else x2++;
		}
		if(x>=0)
		{
			if(x1>=x)
			{
				if((y>=0 && y1>=y) || (y<=0 && y2>=abs(y)))flag=1;
			}
		}
		else
		{
			if(x2>=abs(x))
			{
				if((y>=0 && y1>=y) || (y<=0 && y2>=abs(y)))flag=1;
			}
		}
		if(flag)cout << "YES\n";
		else cout << "NO\n";
    }
	return 0;
}
```