#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define be begin()
#define en end()
#define le length()
#define all(x) (x).begin(), (x).end()
#define rep(i, n) for (ll i = 0; i < n; i++)
#define repo(i, n) for (ll i = 1; i <= n; i++)
#define foreach(c, itr) for (__typeof((c).begin()) itr = (c).begin(); itr != (c).end(); itr++)
#define fastIO                        \
ios_base::sync_with_stdio(false); \
cin.tie(NULL);                    \
cout.tie(NULL)
#define eps 1e-6
#define pi 3.141592653589793
#define c(a) cout << a << "\n";
#define ao(a)        \
for (auto i : a) \
    cout << i << " ";
#define endl '\n'
typedef vector<int> vii;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const int N = 2e5 + 4;

ll powmod(ll a, ll b, ll mod)
{
    ll res = 1;
    a %= mod;
    for (; b; b >>= 1)
    {
        if (b & 1)
            res = (res * a) % mod;
        a = (a * a) % mod;
    }
    return res;
}

ll gcd(ll a, ll b)
{
    while (b > 0)
    {
        ll t = a % b;
        a = b, b = t;
    }
    return a;
}

ll lcm(ll a, ll b)
{
    return (a / gcd(a, b)) * b;
}

ll is_prime(ll n)
{
    if (n <= 1 || n > 3 && (n % 2 == 0 || n % 3 == 0))
        return 0;
    for (ll i = 5, t = 2; i * i <= n; i += t, t = 6 - t)
        if (n % i == 0)
            return 0;
        return 1;
    }
    ll modI(ll a, ll m)
    {
        ll m0 = m, y = 0, x = 1;
        if (m == 1)
            return 0;
        while (a > 1)
        {
            ll q = a / m;
            ll t = m;
            m = a % m;
            a = t;
            t = y;
            y = x - q * y;
            x = t;
        }
        if (x < 0)
            x += m0;
        return x;
    }

    long long mod_inv(long long a, long long m = MOD)
    {
        return a == 1 ? 1 : m - mod_inv(m % a, a) * m / a;
    }

    long long choose(long long n, long long r)
    {
        long long product = 1;

        for (long long i = 0; i < r; i++)
            product = product * (n - i) % MOD * mod_inv(i + 1) % MOD;

        return product;
    }

    int bit[N];

// void init(void){
//     int i;
//     rep(i,(1<<20)) v[i] = 0;
// }

    void update(int idx, int val)
    {
        while (idx <= N)
        {
            bit[idx] += val;
            idx += idx & -idx;
        }
    }

// int pref(int idx)
// {
//     int ans = 0;
//     while (idx > 0)
//     {
//         ans += bit[idx];
//         idx -= idx & -idx;
//     }
//     return ans;
// }
// long long get(vector<long long> &f, int pos) {
//     long long res = 0;
//     for (; pos >= 0; pos = (pos & (pos + 1)) - 1)
//         res += f[pos];
//     return res;
// }

// void upd(vector<long long> &f, int pos, int val) {
//     for (; pos < int(f.size()); pos |= pos + 1) {
//         f[pos] += val;
//     }
// }
// int dx[] = {-1, -1, -1, 0, 0, 0, 1, 1, 1};
// int dy[] = {-1, 0, 1, -1, 0, 1, -1, 0, 1};
// int dx[4]={-1, +1, 0, 0};
// int dy[4]={0, 0, +1, -1};
/*************************************************************************************************************/
// bool prime[500000000];
// void pre()
// {
//     for (int i = 2; i < 500000000; i++)
//     {
//         if (!prime[i])
//         {
//             for (int j = 2 / i; j < 500000000; j += i)
//                 prime[j] = true;
//         }
//     }
// }
    int main(){

        fastIO;
        ll t;
        cin>>t;
        while(t--)
        {
            ll x,y;
            cin>>x>>y;
            string s;
            cin>>s;
            int n=s.size();
            ll a[4]={0};
            rep(i,n){
                if(s[i]=='U') a[0]++;
                else if(s[i]=='D') a[1]++;
                else if(s[i]=='L') a[2]++;
                else a[3]++;
            }
            if(x<=0){
                if(y<=0){
                    if(a[1]>=abs(y) && a[2]>=abs(x)) c("YES")
                        else c("NO")
                }
                else{
                    if(a[0]>=abs(y) && a[2]>=abs(x)) c("YES")
                        else c("NO")
                }
            }
            else{

                if(y<=0){
                    if(a[1]>=abs(y) && a[3]>=abs(x)) c("YES")
                        else c("NO")
                }
                else{
                    if(a[0]>=abs(y) && a[3]>=abs(x)) c("YES")
                        else c("NO")
                }

            }
        }

        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 pb push_back
#define mp make_pair
#define fi first
#define se second
#define be begin()
#define en end()
#define le length()
#define all(x) (x).begin(), (x).end()
#define rep(i, n) for (ll i = 0; i < n; i++)
#define repo(i, n) for (ll i = 1; i <= n; i++)
#define foreach(c, itr) for (__typeof((c).begin()) itr = (c).begin(); itr != (c).end(); itr++)
#define fastIO                        \
ios_base::sync_with_stdio(false); \
cin.tie(NULL);                    \
cout.tie(NULL)
#define eps 1e-6
#define pi 3.141592653589793
#define c(a) cout << a << "\n";
#define ao(a)        \
for (auto i : a) \
    cout << i << " ";
#define endl '\n'
typedef vector<int> vii;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const int N = 2e5 + 4;

ll powmod(ll a, ll b, ll mod)
{
    ll res = 1;
    a %= mod;
    for (; b; b >>= 1)
    {
        if (b & 1)
            res = (res * a) % mod;
        a = (a * a) % mod;
    }
    return res;
}

ll gcd(ll a, ll b)
{
    while (b > 0)
    {
        ll t = a % b;
        a = b, b = t;
    }
    return a;
}

ll lcm(ll a, ll b)
{
    return (a / gcd(a, b)) * b;
}

ll is_prime(ll n)
{
    if (n <= 1 || n > 3 && (n % 2 == 0 || n % 3 == 0))
        return 0;
    for (ll i = 5, t = 2; i * i <= n; i += t, t = 6 - t)
        if (n % i == 0)
            return 0;
        return 1;
    }
    ll modI(ll a, ll m)
    {
        ll m0 = m, y = 0, x = 1;
        if (m == 1)
            return 0;
        while (a > 1)
        {
            ll q = a / m;
            ll t = m;
            m = a % m;
            a = t;
            t = y;
            y = x - q * y;
            x = t;
        }
        if (x < 0)
            x += m0;
        return x;
    }

    long long mod_inv(long long a, long long m = MOD)
    {
        return a == 1 ? 1 : m - mod_inv(m % a, a) * m / a;
    }

    long long choose(long long n, long long r)
    {
        long long product = 1;

        for (long long i = 0; i < r; i++)
            product = product * (n - i) % MOD * mod_inv(i + 1) % MOD;

        return product;
    }

    int bit[N];

// void init(void){
//     int i;
//     rep(i,(1<<20)) v[i] = 0;
// }

    void update(int idx, int val)
    {
        while (idx <= N)
        {
            bit[idx] += val;
            idx += idx & -idx;
        }
    }

// int pref(int idx)
// {
//     int ans = 0;
//     while (idx > 0)
//     {
//         ans += bit[idx];
//         idx -= idx & -idx;
//     }
//     return ans;
// }
// long long get(vector<long long> &f, int pos) {
//     long long res = 0;
//     for (; pos >= 0; pos = (pos & (pos + 1)) - 1)
//         res += f[pos];
//     return res;
// }

// void upd(vector<long long> &f, int pos, int val) {
//     for (; pos < int(f.size()); pos |= pos + 1) {
//         f[pos] += val;
//     }
// }
// int dx[] = {-1, -1, -1, 0, 0, 0, 1, 1, 1};
// int dy[] = {-1, 0, 1, -1, 0, 1, -1, 0, 1};
// int dx[4]={-1, +1, 0, 0};
// int dy[4]={0, 0, +1, -1};
/*************************************************************************************************************/
// bool prime[500000000];
// void pre()
// {
//     for (int i = 2; i < 500000000; i++)
//     {
//         if (!prime[i])
//         {
//             for (int j = 2 / i; j < 500000000; j += i)
//                 prime[j] = true;
//         }
//     }
// }
    int main(){

        fastIO;
        ll t;
        cin>>t;
        while(t--)
        {
            ll x,y;
            cin>>x>>y;
            string s;
            cin>>s;
            int n=s.size();
            ll a[4]={0};
            rep(i,n){
                if(s[i]=='U') a[0]++;
                else if(s[i]=='D') a[1]++;
                else if(s[i]=='L') a[2]++;
                else a[3]++;
            }
            if(x<=0){
                if(y<=0){
                    if(a[1]>=abs(y) && a[2]>=abs(x)) c("YES")
                        else c("NO")
                }
                else{
                    if(a[0]>=abs(y) && a[2]>=abs(x)) c("YES")
                        else c("NO")
                }
            }
            else{

                if(y<=0){
                    if(a[1]>=abs(y) && a[3]>=abs(x)) c("YES")
                        else c("NO")
                }
                else{
                    if(a[0]>=abs(y) && a[3]>=abs(x)) c("YES")
                        else c("NO")
                }

            }
        }

        return 0;
    }

```