#include <iostream>
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <bits/stdc++.h>
#include <unordered_map>
#include <time.h>
#include <cmath>
#include <string>
using namespace std;
#define w(t) while (t--)
#define vi(v) vector<int> v;
#define pii(p) pair<int, int> p;
#define vll vector<long long>;
#define pll pair<long long, long long>;
#define pb push_back
#define all(c) c.begin(), c.end()
#define For(i, a, b) for (size_t i = a; i < b; ++i)
#define Rof(i, a, b) for (size_t i = a; i > b; i--)
#define um unordered_map
#define F first
#define S second
#define ll long long
#define min(a, b) (a < b ? a : b)
#define max(a, b) (a > b ? a : b)
#define fast_io()                     \
    ios_base::sync_with_stdio(false); \
    cin.tie(NULL);                    \
    cout.tie(NULL);
/* ------------------------------------------------------------------------------------------------------------------------- */

int binarySearch(int arr[], int l, int r, int x)
{
    while (l <= r)
    {
        int m = l + (r - l) / 2;

        // Check if x is present at mid
        if (arr[m] == x)
            return m;

        // If x greater, ignore left half
        if (arr[m] < x)
            l = m + 1;

        // If x is smaller, ignore right half
        else
            r = m - 1;
    }

    // if we reach here, then element was
    // not present
    return -1;
}

bool findPartiion(int arr[], int n)
{
    int sum = 0;
    int i, j;

    // Calculate sum of all elements
    for (i = 0; i < n; i++)
        sum += arr[i];

    if (sum % 2 != 0)
        return false;

    bool part[sum / 2 + 1];

    // Initialze the part array
    // as 0
    for (i = 0; i <= sum / 2; i++)
    {
        part[i] = 0;
    }

    // Fill the partition table in bottom up manner

    for (i = 0; i < n; i++)
    {
        // the element to be included
        // in the sum cannot be
        // greater than the sum
        for (j = sum / 2; j >= arr[i];
             j--)
        { // check if sum - arr[i]
            // could be formed
            // from a subset
            // using elements
            // before index i
            if (part[j - arr[i]] == 1 || j == arr[i])
                part[j] = 1;
        }
    }

    return part[sum / 2];
}

string met()
{
    ll px, py;
    cin >> px >> py;
    string s;
    cin >> s;
    int l = 0, r = 0, u = 0, d = 0;
    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == 'U')
        {
            u++;
        }
        else if (s[i] == 'D')
        {
            d++;
        }
        else if (s[i] == 'L')
        {
            l++;
        }
        else if (s[i] == 'R')
        {
            r++;
        }
    }
    if (px > 0){
        if (r < px)
            return "NO";
    }
    else{
        if ( -1*l > px)
            return "NO";
    }
    if (py > 0){
        if (u < py)
            return "NO";
    }
    else{
        if (-1 * d > py)
            return "NO";
    }
    return "YES";
}

int main()
{
    fast_io();
    int t;
    cin >> t;
    while (t--)
    {

        // clock_t t;
        // t = clock();

        // each iteration takes this time
        // t = clock() - t;
        // cout << "time : " << float(t)/CLOCKS_PER_SEC << " sec" << endl;
        cout << met() << endl;
        
    }

    return 0;
}