#include<bits/stdc++.h>
#define pi acos(-1)
#define Case int t;scanf("%d",&t);while(t--)
#define eps 1e-12 
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=1e6+10;
int prime[maxn];
char s[maxn];
bool vis[maxn];
ll cnt;
ll quick(ll n,ll q){
	ll res=1;
	while(n){
		if(n&1)res=(res*q);
		n>>=1;
		q=q*q;
	}
	return res;
}
void init(){
	cnt=0;
	for(int i=2;i<maxn;i++){
		if(!vis[i]){
			prime[++cnt]=i;
		}
		for(int j=1;j<maxn;j++){
			if(i*prime[j]>maxn)break;
			vis[i*prime[j]]=1;
			if(i%prime[j]==0)break;
		}
	}
}
void run(){
	int x,y;
	scanf("%d%d",&x,&y);
	scanf("%s",s+1);
	int num1,num2,num3,num4;
	num1=num2=num3=num4=0;
	int len=strlen(s+1);
	for(int i=1;i<=len;i++){
		if(s[i]=='U'){
			num1++;
		}
		
		if(s[i]=='D'){
			num2++;
		}
		if(s[i]=='L'){
			num3++;
		}
		if(s[i]=='R'){
			num4++;
		}
	}
//	cout<<num1<<endl;
//	cout<<num2<<endl;
//	cout<<num3<<endl;
//	cout<<num4<<endl;
	int numx,numy;
	int flag=1;
	if(x>=0){
		numx=x;
		if(numx>num4){
//			printf("%d\n",numx);
			flag=0;
		}
	}
	else {
		numx=-x;
		if(numx>num3){
			flag=0;
		}
	}
	if(y>=0){
		numy=y;
		if(numy>num1){
			flag=0;
		}
	}
	else {
		numy=-y;
		if(numy>num2){
			flag=0;
		}
	}
//	cout<<numx<<" "<<numy<<endl;
	if(!flag)printf("NO\n");
	else printf("YES\n");
}
int main(){
	Case
    	run();
    return 0;
}
### Prompt

Generate 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>
#define pi acos(-1)
#define Case int t;scanf("%d",&t);while(t--)
#define eps 1e-12 
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=1e6+10;
int prime[maxn];
char s[maxn];
bool vis[maxn];
ll cnt;
ll quick(ll n,ll q){
	ll res=1;
	while(n){
		if(n&1)res=(res*q);
		n>>=1;
		q=q*q;
	}
	return res;
}
void init(){
	cnt=0;
	for(int i=2;i<maxn;i++){
		if(!vis[i]){
			prime[++cnt]=i;
		}
		for(int j=1;j<maxn;j++){
			if(i*prime[j]>maxn)break;
			vis[i*prime[j]]=1;
			if(i%prime[j]==0)break;
		}
	}
}
void run(){
	int x,y;
	scanf("%d%d",&x,&y);
	scanf("%s",s+1);
	int num1,num2,num3,num4;
	num1=num2=num3=num4=0;
	int len=strlen(s+1);
	for(int i=1;i<=len;i++){
		if(s[i]=='U'){
			num1++;
		}
		
		if(s[i]=='D'){
			num2++;
		}
		if(s[i]=='L'){
			num3++;
		}
		if(s[i]=='R'){
			num4++;
		}
	}
//	cout<<num1<<endl;
//	cout<<num2<<endl;
//	cout<<num3<<endl;
//	cout<<num4<<endl;
	int numx,numy;
	int flag=1;
	if(x>=0){
		numx=x;
		if(numx>num4){
//			printf("%d\n",numx);
			flag=0;
		}
	}
	else {
		numx=-x;
		if(numx>num3){
			flag=0;
		}
	}
	if(y>=0){
		numy=y;
		if(numy>num1){
			flag=0;
		}
	}
	else {
		numy=-y;
		if(numy>num2){
			flag=0;
		}
	}
//	cout<<numx<<" "<<numy<<endl;
	if(!flag)printf("NO\n");
	else printf("YES\n");
}
int main(){
	Case
    	run();
    return 0;
}
```