#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define cy cout<<"YES"<<endl
#define cn cout<<"NO"<<endl
#define ms(a,b) memset(a, b, sizeof a);
#define scd(n) scanf("%d",&n)
#define scld(n) scanf("%lld",&n)
#define lp(i,a,b) for(i=a; i<b; i++)
const int INF = 0x3f3f3f3f;
#define MOD 1000000009

int main()
{
    int t; t=1;
    scd(t);
    while(t--)
    {
        int px, py; cin>>px>>py;
        string s; cin>>s;
        sort(s.begin(), s.end());
        int r = 0, l = 0, u = 0, d = 0;
        for(int i=0; i<s.size(); i++)
        {
            if(s[i]=='R')r++;
            if(s[i]=='L')l++;
            if(s[i]=='U')u++;
            if(s[i]=='D')d++;
        }
        int x, y;
        bool f = true;
        if(px>0)
        {
            if(px<=r)f= true;
            else f = false;
        }
        else if(px<0)
        {
            l*=-1;
            if(px>=l)f = true;
            else f =false;
        }
        if(f)
        {
            if(py>0)
            {
                if(py<=u)f=true;
                else f= false;
            }
            else if(py<0)
            {
                d*=-1;
                if(py>=d)f=true;
                else f=false;
            }
        }
        if(f)cy;
        else cn;

    }
    return 0;
}

/*
map<ll, int>mp;
map<ll, int>::iterator it;
ll a[n+2]; int b[n+2], c=0;
        for(it = mp.begin(); it != mp.end(); it++)
        {
           a[c]=(it->first);
           b[c++]=(it->second);
        }
*/

### Prompt

Your challenge is to write 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;
typedef long long ll;
#define cy cout<<"YES"<<endl
#define cn cout<<"NO"<<endl
#define ms(a,b) memset(a, b, sizeof a);
#define scd(n) scanf("%d",&n)
#define scld(n) scanf("%lld",&n)
#define lp(i,a,b) for(i=a; i<b; i++)
const int INF = 0x3f3f3f3f;
#define MOD 1000000009

int main()
{
    int t; t=1;
    scd(t);
    while(t--)
    {
        int px, py; cin>>px>>py;
        string s; cin>>s;
        sort(s.begin(), s.end());
        int r = 0, l = 0, u = 0, d = 0;
        for(int i=0; i<s.size(); i++)
        {
            if(s[i]=='R')r++;
            if(s[i]=='L')l++;
            if(s[i]=='U')u++;
            if(s[i]=='D')d++;
        }
        int x, y;
        bool f = true;
        if(px>0)
        {
            if(px<=r)f= true;
            else f = false;
        }
        else if(px<0)
        {
            l*=-1;
            if(px>=l)f = true;
            else f =false;
        }
        if(f)
        {
            if(py>0)
            {
                if(py<=u)f=true;
                else f= false;
            }
            else if(py<0)
            {
                d*=-1;
                if(py>=d)f=true;
                else f=false;
            }
        }
        if(f)cy;
        else cn;

    }
    return 0;
}

/*
map<ll, int>mp;
map<ll, int>::iterator it;
ll a[n+2]; int b[n+2], c=0;
        for(it = mp.begin(); it != mp.end(); it++)
        {
           a[c]=(it->first);
           b[c++]=(it->second);
        }
*/

```