#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main(){
  int n,m,a,b;
  cin>>n>>m>>a>>b;
  if(n*m<2*(a+b)){
    cout<<"NO"<<endl;
    return 0;
  }
  
  if(n%2==0&&m%2==0){
    int c=(a+1)/2,d=(b+1)/2;
    int vec[n][m];
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        vec[i][j]=0;
      }
    }
    int x=0,y=0;
    for(int i=0;i<n/2;i++){
      for(int j=0;j<m/2;j++){
        if(x<c){
          if(a>1){
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            vec[i*2+1][j*2]=1;
            vec[i*2+1][j*2+1]=2;
            a-=2;
            x++;
            continue;
          }
          else{
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            a=0;
            x++;
            continue;
          }
        }
        else if(y<d){
          if(b>1){
            vec[i*2][j*2]=3;
            vec[i*2][j*2+1]=3;
            vec[i*2+1][j*2]=4;
            vec[i*2+1][j*2+1]=4;
            b-=2;
            y++;
            continue;
          }
          else{
            vec[i*2][j*2]=3;
            vec[i*2+1][j*2]=4;
            b=0;
            y++;
            continue;
          }
        }
      }
    }
    if(x<c||y<d){
      cout<<"NO"<<endl;
      return 0;
    }
    cout<<"YES"<<endl;
    vector<char> vecc;
    vecc={'.','<','>','^','v'};
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        cout<<vecc.at(vec[i][j]);
      }
      cout<<endl;
    }
    return 0;
  }
  
  if(n%2==0&&m%2==1){
    int vec[n][m];
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        vec[i][j]=0;
      }
    }
    for(int i=0;i<n-1;i++){
      if(vec[i][m-1]==0){
        if(b>0){
          vec[i][m-1]=3;
          vec[i+1][m-1]=4;
          b--;
        }
      }
    }
    int c=(a+1)/2,d=(b+1)/2;
    int x=0,y=0;
    for(int i=0;i<n/2;i++){
      for(int j=0;j<m/2;j++){
        if(x<c){
          if(a>1){
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            vec[i*2+1][j*2]=1;
            vec[i*2+1][j*2+1]=2;
            a-=2;
            x++;
            continue;
          }
          else{
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            a=0;
            x++;
            continue;
          }
        }
        else if(y<d){
          if(b>1){
            vec[i*2][j*2]=3;
            vec[i*2][j*2+1]=3;
            vec[i*2+1][j*2]=4;
            vec[i*2+1][j*2+1]=4;
            b-=2;
            y++;
            continue;
          }
          else{
            vec[i*2][j*2]=3;
            vec[i*2+1][j*2]=4;
            b=0;
            y++;
            continue;
          }
        }
      }
    }
    if(x<c||y<d){
      cout<<"NO"<<endl;
      return 0;
    }
    cout<<"YES"<<endl;
    vector<char> vecc;
    vecc={'.','<','>','^','v'};
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        cout<<vecc.at(vec[i][j]);
      }
      cout<<endl;
    }
    return 0;
  }
  
  if(n%2==1&&m%2==0){
    int vec[n][m];
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        vec[i][j]=0;
      }
    }
    for(int i=0;i<m-1;i++){
      if(vec[n-1][i]==0){
        if(a>0){
          vec[n-1][i]=1;
          vec[n-1][i+1]=2;
          a--;
        }
      }
    }
    int c=(a+1)/2,d=(b+1)/2;
    int x=0,y=0;
    for(int i=0;i<n/2;i++){
      for(int j=0;j<m/2;j++){
        if(x<c){
          if(a>1){
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            vec[i*2+1][j*2]=1;
            vec[i*2+1][j*2+1]=2;
            a-=2;
            x++;
            continue;
          }
          else{
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            a=0;
            x++;
            continue;
          }
        }
        else if(y<d){
          if(b>1){
            vec[i*2][j*2]=3;
            vec[i*2][j*2+1]=3;
            vec[i*2+1][j*2]=4;
            vec[i*2+1][j*2+1]=4;
            b-=2;
            y++;
            continue;
          }
          else{
            vec[i*2][j*2]=3;
            vec[i*2+1][j*2]=4;
            b=0;
            y++;
            continue;
          }
        }
      }
    }
    if(x<c||y<d){
      cout<<"NO"<<endl;
      return 0;
    }
    cout<<"YES"<<endl;
    vector<char> vecc;
    vecc={'.','<','>','^','v'};
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        cout<<vecc.at(vec[i][j]);
      }
      cout<<endl;
    }
    return 0;
  }
  
  if(n%2==1&&m%2==1){
    int vec[n][m];
    int copya=a,copyb=b;
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        vec[i][j]=0;
      }
    }
    for(int i=0;i<n-1;i++){
      if(vec[i][m-1]==0){
        if(b>0){
          vec[i][m-1]=3;
          vec[i+1][m-1]=4;
          b--;
        }
      }
    }
    for(int i=0;i<m-1;i++){
      if(vec[n-1][i]==0){
        if(a>0){
          vec[n-1][i]=1;
          vec[n-1][i+1]=2;
          a--;
        }
      }
    }
    int c=(a+1)/2,d=(b+1)/2;
    int x=0,y=0;
    for(int i=0;i<n/2;i++){
      for(int j=0;j<m/2;j++){
        if(x<c){
          if(a>1){
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            vec[i*2+1][j*2]=1;
            vec[i*2+1][j*2+1]=2;
            a-=2;
            x++;
            continue;
          }
          else{
            vec[i*2][j*2]=1;
            vec[i*2][j*2+1]=2;
            a=0;
            x++;
            continue;
          }
        }
        else if(y<d){
          if(b>1){
            vec[i*2][j*2]=3;
            vec[i*2][j*2+1]=3;
            vec[i*2+1][j*2]=4;
            vec[i*2+1][j*2+1]=4;
            b-=2;
            y++;
            continue;
          }
          else{
            vec[i*2][j*2]=3;
            vec[i*2+1][j*2]=4;
            b=0;
            y++;
            continue;
          }
        }
      }
    }
    if(x<c||y<d){
      for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
          vec[i][j]=0;
        }
      }
      a=copya;
      b=copyb;
      vec[n-1][m-1]=2;
      vec[n-1][m-2]=1;
      vec[n-1][m-3]=4;
      vec[n-2][m-1]=4;
      vec[n-2][m-3]=3;
      vec[n-3][m-1]=3;
      vec[n-3][m-2]=2;
      vec[n-3][m-3]=1;
      a-=2;
      b-=2;
      for(int i=0;i<n-3;i++){
        if(vec[i][m-1]==0){
          if(b>0){
            vec[i][m-1]=3;
            vec[i+1][m-1]=4;
            b--;
          }
        }
      }
      for(int i=0;i<m-3;i++){
        if(vec[n-1][i]==0){
          if(a>0){
            vec[n-1][i]=1;
            vec[n-1][i+1]=2;
            a--;
          }
        }
      }
      c=(a+1)/2,d=(b+1)/2;
      x=0,y=0;
      for(int i=0;i<n/2;i++){
        for(int j=0;j<m/2;j++){
          if(vec[2*i][2*j]==0){
            if(x<c){
              if(a>1){
                vec[i*2][j*2]=1;
                vec[i*2][j*2+1]=2;
                vec[i*2+1][j*2]=1;
                vec[i*2+1][j*2+1]=2;
                a-=2;
                x++;
                continue;
              }
              else{
                vec[i*2][j*2]=1;
                vec[i*2][j*2+1]=2;
                a=0;
                x++;
                continue;
              }
            }
            else if(y<d){
              if(b>1){
                vec[i*2][j*2]=3;
                vec[i*2][j*2+1]=3;
                vec[i*2+1][j*2]=4;
                vec[i*2+1][j*2+1]=4;
                b-=2;
                y++;
                continue;
              }
              else{
                vec[i*2][j*2]=3;
                vec[i*2+1][j*2]=4;
                b=0;
                y++;
                continue;
              }
            }
          }
        }
      }
      if(x<c||y<d){
        cout<<"NO"<<endl;
        return 0;
      }
    }
    cout<<"YES"<<endl;
    vector<char> vecc;
    vecc={'.','<','>','^','v'};
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        cout<<vecc.at(vec[i][j]);
      }
      cout<<endl;
    }
    return 0;
  }    
}

Measured memory_bytes: 5120