D. Time to Run【构造】
#include <bits/stdc++.h>
#define dbg(x) cout << #x << "=" << x << endl
#define eps 1e-8
#define pi acos(-1.0)
using namespace std;
typedef long long LL;
const int inf = 0x3f3f3f3f;
template<class T>inline void read(T &res)
{
    char c;T flag=1;
    while((c=getchar())<'0'||c>'9')if(c=='-')flag=-1;res=c-'0';
    while((c=getchar())>='0'&&c<='9')res=res*10+c-'0';res*=flag;
}
namespace _buff {
    const size_t BUFF = 1 << 19;
    char ibuf[BUFF], *ib = ibuf, *ie = ibuf;
    char getc() {
        if (ib == ie) {
            ib = ibuf;
            ie = ibuf + fread(ibuf, 1, BUFF, stdin);
        }
        return ib == ie ? -1 : *ib++;
    }
}
int qread() {
    using namespace _buff;
    int ret = 0;
    bool pos = true;
    char c = getc();
    for (; (c < '0' || c > '9') && c != '-'; c = getc()) {
        assert(~c);
    }
    if (c == '-') {
        pos = false;
        c = getc();
    }
    for (; c >= '0' && c <= '9'; c = getc()) {
        ret = (ret << 3) + (ret << 1) + (c ^ 48);
    }
    return pos ? ret : -ret;
}
int m, n, k;
map<string, int> mp;
vector<pair<int, string> > vec;
void write(string a) {
    mp[a] = 0;
}
int main()
{
    scanf("%d %d %d",&n, &m, &k);
    if(4 * n * m - 2 * n - 2 * m < k) {
        puts("NO");
        return 0;
    }
    else {
        puts("YES");
        int cnt = 0;
        for ( int i = 1; i <= m - 1; ++i ) {
            if(cnt < k) {
                ++cnt;
                mp["R"]++;
            }
            else {
                break;
            }
        }
        if(mp["R"]) {
            vec.push_back(make_pair(mp["R"], "R"));
            write("R");
        }
        for ( int i = 1; i <= m - 1; ++i ) {
            if(cnt < k) {
                ++cnt;
                mp["L"]++;
            }
            else {
                break;
            }
        }
        if(mp["L"]) {
            vec.push_back(make_pair(mp["L"], "L"));
            write("L");
        }
        for(int j = 1; j <= n - 1; ++j) {
            if(cnt > k)
                break;
            for ( int i = 1; i <= m-2; ++i ) {
                if(k - cnt > 3) {
                    mp["DRU"]++;
                    cnt += 3;
                }
            }
            //dbg(k-cnt);
            if(k - cnt >= 3 && m > 1) {
                cnt += 3;
                mp["DRU"]++;
                //dbg(mp["DRU"]);
            }
            else {
                if(m > 1) {
                    if(cnt < k) {
                        mp["D"]++;
                        cnt++;
                        vec.push_back(make_pair(mp["D"], "D"));
                        write("D");
                    }
                    if(cnt < k) {
                        mp["R"]++;
                        cnt++;
                        vec.push_back(make_pair(mp["R"], "R"));
                        write("R");
                    }
                }
            }
            if(mp["DRU"]) {
                vec.push_back(make_pair(mp["DRU"], "DRU"));
                write("DRU");
            }
            if(cnt < k) {
                mp["D"]++;
                cnt++;
                vec.push_back(make_pair(mp["D"], "D"));
                write("D");
            }
            for ( int i = 1; i <= m - 1; ++i ) {
                if(cnt < k) {
                    mp["L"]++;
                    cnt++;
                }
                else {
                    break;
                }   
            }
            if(mp["L"] != 0) {
                vec.push_back(make_pair(mp["L"], "L"));
                write("L");
            }
        }
        for ( int i = 1; i <= n-1; ++i ) {
            if(cnt < k) {
                ++cnt;
                mp["U"]++;
            }
        }
        if(mp["U"]) {
            vec.push_back(make_pair(mp["U"], "U"));
        }
        int d = vec.size();
        printf("%d\n",d);
        for ( int i = 0; i < d; ++i ) {
            cout << vec[i].first << " " << vec[i].second << endl;
        }
    }
    return 0;
}

    



                
            
        
浙公网安备 33010602011771号