unittest
{
	assert( [ "0 0 1 2" ].parse.expand.solve == "UURDDLLUUURRDRDDDLLU" );
//	assert( [ "-2 -2 1 1" ].parse.expand.solve == "UURRURRDDDLLDLLULUUURRURRDDDLLDL" );		// 答えが複数あるのでこっちには一致しないけど大丈夫
	assert( [ "-2 -2 1 1" ].parse.expand.solve == "UUURRRDDDLLLLUUUURRRRDRDDDDLLLLU" );
}



import std.conv;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto sxytxy = input.front.split.to!( long[] );
	return tuple( sxytxy[ 0 ], sxytxy[ 1 ], sxytxy[ 2 ], sxytxy[ 3 ] );
}

auto solve( long sx, long sy, long tx, long ty )
{
	auto ans = "";
	
	// 距離を計算
	long dx = tx - sx;
	long dy = ty - sy;
	
	// 1週目の経路
	ans ~= "U".repeat( dy ).join;
	ans ~= "R".repeat( dx ).join;
	ans ~= "D".repeat( dy ).join;
	ans ~= "L".repeat( dx ).join;
	
	// 2週目の経路（1週目と重複しないように1マス大回りする）
	ans ~= "L";
	ans ~= "U".repeat( dy + 1 ).join;
	ans ~= "R".repeat( dx + 1 ).join;
	ans ~= "DR";
	ans ~= "D".repeat( dy + 1 ).join;
	ans ~= "L".repeat( dx + 1 ).join;
	ans ~= "U";
	
	return ans;
}
