#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 ;
}