#include <iostream>
#include <cstdio>

using namespace std;

typedef long long ll;

ll n, m, a, b;
char d[1005][1005];

void f()
{
    for(ll i = 0; i < n; i+=2)
    {
        for(ll j = 0; j < m; j+=2)
        {
            if(a > 0 && d[i][j] == '.' && d[i][j + 1] == '.') a--, d[i][j] = '<', d[i][j + 1] = '>';
            if(a > 0 && d[i + 1][j] == '.' && d[i + 1][j + 1] == '.') a--, d[i + 1][j] = '<', d[i + 1][j + 1] = '>';
        }
    }
    for(ll i = 0; i < n; i+=2)
    {
        for(ll j = 0; j < m; j+=2)
        {
            if(b > 0 && d[i][j] == '.' && d[i + 1][j] == '.') b--, d[i][j] = '^', d[i + 1][j] = 'v';
            if(b > 0 && d[i][j + 1] == '.' && d[i + 1][j + 1] == '.') b--, d[i][j + 1] = '^', d[i + 1][j + 1] = 'v';
        }
    }
}

void g()
{
    if(a > 0 || b > 0)
    {
        printf("NO\n");
        return;
    }
    printf("YES\n");
    for(ll i = 0; i < n; i++)
    {
        for(ll j = 0; j < m; j++)
        {
            if(a < 0 && d[i][j] == '<' && d[i][j + 1] == '>') a++, d[i][j] = '.', d[i][j + 1] = '.';
            if(b < 0 && d[i][j] == '^' && d[i + 1][j] == 'v') b++, d[i][j] = '.', d[i + 1][j] = '.';
        }
    }
    for(ll i = 0; i < n; i++)
    {
        for(ll j = 0; j < m; j++)
        {
            printf("%c", d[i][j]);
        }
        puts("");
    }
}

int main()
{
    cin>>n>>m>>a>>b;
    for(ll i = 0; i < n; i++) for(ll j = 0; j < m; j++) d[i][j] = '.';
    if(n % 2 == 1 && m % 2 == 1 && n > 1 && m > 1)
    {
        for(ll i = 0; i < m - 3; i+=2)
        {
            d[n - 1][i] = '<', d[n - 1][i + 1] = '>';
            a--;
        }
        for(ll i = 0; i < n - 3; i+=2)
        {
            d[i][m - 1] = '^', d[i + 1][m - 1] = 'v';
            b--;
        }
        ll x = 0;
        if(a <= 1) x = 2;
        else if(b <= 1) x = 1;
        else if(a % 2 == 1 && b % 2 == 1) x = 1;
        else if(a % 2 == 0 && b % 2 == 0) x = 3;
        else if(a > b) x = 1;
        else x = 2;
        if(x == 1)
        {
            d[n - 3][m - 3] = '<';
            d[n - 3][m - 2] = '>';
            d[n - 3][m - 1] = '^';
            d[n - 2][m - 3] = '<';
            d[n - 2][m - 2] = '>';
            d[n - 2][m - 1] = 'v';
            d[n - 1][m - 3] = '<';
            d[n - 1][m - 2] = '>';
            d[n - 1][m - 1] = '.';
            a -= 3;
            b--;
        }
        else if(x == 2)
        {
            d[n - 3][m - 3] = '^';
            d[n - 3][m - 2] = '^';
            d[n - 3][m - 1] = '^';
            d[n - 2][m - 3] = 'v';
            d[n - 2][m - 2] = 'v';
            d[n - 2][m - 1] = 'v';
            d[n - 1][m - 3] = '<';
            d[n - 1][m - 2] = '>';
            d[n - 1][m - 1] = '.';
            a--;
            b -= 3;
        }
        else
        {
            d[n - 3][m - 3] = '<';
            d[n - 3][m - 2] = '>';
            d[n - 3][m - 1] = '^';
            d[n - 2][m - 3] = '^';
            d[n - 2][m - 2] = '.';
            d[n - 2][m - 1] = 'v';
            d[n - 1][m - 3] = 'v';
            d[n - 1][m - 2] = '<';
            d[n - 1][m - 1] = '>';
            a -= 2;
            b -= 2;
        }
        f();
        g();
    }
    else if(n == 1 && m % 2 == 1)
    {
        for(ll i = 0; i < m - 1; i+=2)
        {
            d[0][i] = '<', d[0][i + 1] = '>';
            a--;
        }
        g();
    }
    else if(n % 2 == 1 && m == 1)
    {
        for(ll i = 0; i < n - 1; i+=2)
        {
            d[i][0] = '^', d[i + 1][0] = 'v';
            b--;
        }
        g();
    }
    else if(n % 2 == 1)
    {
        for(ll i = 0; i < m; i+=2)
        {
            d[n - 1][i] = '<', d[n - 1][i + 1] = '>';
            a--;
        }
        f();
        g();
    }
    else if(m % 2 == 1)
    {
        for(ll i = 0; i < n; i+=2)
        {
            d[i][m - 1] = '^', d[i + 1][m - 1] = 'v';
            b--;
        }
        f();
        g();
    }
    else
    {
        f();
        g();
    }
    return 0;
}


Measured memory_bytes: 2176