#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization ("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(0);cin.tie(NULL);
#define ll long long int
#define pb push_back
#define mk make_pair
#define mt make_tuple
#define fi first
#define se second
#define test ll var;  cin>>var; while(var--)
#define vll vector<ll>
#define sll set<ll>
#define stt stack<ll>
#define qll queue<ll>
#define all(v) v.begin(),v.end()
#define lb(vec,num) lower_bound(vec.begin(),vec.end(),num)-vec.begin()
#define ub(vec,num) upper_bound(vec.begin(),vec.end(),num)-vec.begin()
#define vpp vector<pair<ll,ll>>
#define mxx(v) *(max_element(v.begin(),v.end()))
#define mnn(v) *(min_element(v.begin(),v.end()))
#define mpp map<ll,ll>
#define pp push
#define reset(v) memset(v,0,sizeof(v))
#define mod 1000000007
#define smm(i,j,k) accumulate(v.begin()+i,v.begin()+j, k);
#define mod1 998244353
#define PII pair<ll,ll>
#define f(i,size) for(i=0;i<size;i++)
#define f1(i,size) for(i=1;i<=size;i++)
#define INF LLONG_MAX
#define endl '\n'

ll power(ll x, ll y, ll p) 
{ 
    ll res = 1; 
    x = x % p; 
    while (y > 0) { 
        if (y & 1) 
            res = (res * x) % p; 
        y = y >> 1; 
        x = (x * x) % p; 
    } 
    return res; 
}




int main() {
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif

    fastio
    
    test
    {
        ll i,j,k,l,m,n;
        string s;
        cin>>n>>m;
        cin>>s;

        k=l=0;

        f(i,s.length())
        {
            if(s[i]=='R'&&n>=0)
                k++;
            if(s[i]=='L'&&n<=0)
                k--;

            if(s[i]=='U'&&m>=0)
                l++;
            if(s[i]=='D'&&m<=0)
                l--;
        }

        if(n==0)
            k=0;
        if(m==0)
            l=0;

        if(n>=0&&m>=0)
        {
            if(k>=n&&l>=m)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else if(n>=0&&m<=0)
        {
            if(k>=n&&l<=m)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else if(n<=0&&m<=0)
        {
            if(k<=n&&l<=m)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else
        {
            if(k<=n&&l>=m)
            cout<<"YES"<<endl;
            else
            cout<<"NO"<<endl;
        }
    }

}
### Prompt

Develop a solution in Cpp to the problem described below:

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
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization ("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(0);cin.tie(NULL);
#define ll long long int
#define pb push_back
#define mk make_pair
#define mt make_tuple
#define fi first
#define se second
#define test ll var;  cin>>var; while(var--)
#define vll vector<ll>
#define sll set<ll>
#define stt stack<ll>
#define qll queue<ll>
#define all(v) v.begin(),v.end()
#define lb(vec,num) lower_bound(vec.begin(),vec.end(),num)-vec.begin()
#define ub(vec,num) upper_bound(vec.begin(),vec.end(),num)-vec.begin()
#define vpp vector<pair<ll,ll>>
#define mxx(v) *(max_element(v.begin(),v.end()))
#define mnn(v) *(min_element(v.begin(),v.end()))
#define mpp map<ll,ll>
#define pp push
#define reset(v) memset(v,0,sizeof(v))
#define mod 1000000007
#define smm(i,j,k) accumulate(v.begin()+i,v.begin()+j, k);
#define mod1 998244353
#define PII pair<ll,ll>
#define f(i,size) for(i=0;i<size;i++)
#define f1(i,size) for(i=1;i<=size;i++)
#define INF LLONG_MAX
#define endl '\n'

ll power(ll x, ll y, ll p) 
{ 
    ll res = 1; 
    x = x % p; 
    while (y > 0) { 
        if (y & 1) 
            res = (res * x) % p; 
        y = y >> 1; 
        x = (x * x) % p; 
    } 
    return res; 
}




int main() {
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif

    fastio
    
    test
    {
        ll i,j,k,l,m,n;
        string s;
        cin>>n>>m;
        cin>>s;

        k=l=0;

        f(i,s.length())
        {
            if(s[i]=='R'&&n>=0)
                k++;
            if(s[i]=='L'&&n<=0)
                k--;

            if(s[i]=='U'&&m>=0)
                l++;
            if(s[i]=='D'&&m<=0)
                l--;
        }

        if(n==0)
            k=0;
        if(m==0)
            l=0;

        if(n>=0&&m>=0)
        {
            if(k>=n&&l>=m)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else if(n>=0&&m<=0)
        {
            if(k>=n&&l<=m)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else if(n<=0&&m<=0)
        {
            if(k<=n&&l<=m)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else
        {
            if(k<=n&&l>=m)
            cout<<"YES"<<endl;
            else
            cout<<"NO"<<endl;
        }
    }

}
```