program main implicit none integer::T,A,B,i integer::maxab,up read *,T,A,B maxab = MAX(A,B) if(T.lt.maxab) then print '(a)', "NO" return else if(A.eq.0.and.B.eq.0) then if(T.eq.1) then print '(a)', "NO" else if(MOD(T,2).eq.0) then print '(a)', "YES" do i=1,T/2 print '(a)',">" print '(a)',"<" end do else print '(a)', "YES" do i=1,(T-3)/2 print '(a)',">" print '(a)',"<" end do print '(a)',">" print '(a)',"^" print '(a)',"" print *, A = A - 1 B = B - 1 end do return else if(MOD(T,2).eq.MOD(maxab,2)) then print '(a)', "YES" do i=1,maxab if(A.gt.0) write(*,'(a)',advance='no') "^" if(B.gt.0) write(*,'(a)',advance='no') ">" print *, A = A - 1 B = B - 1 end do do i=1,(T-maxab)/2 print '(a)', ">" print '(a)', "<" end do return else print '(a)', "YES" if(A.gt.B) then A = A - 1 up = 1 else B = B - 1 up = 0 endif maxab = MAX(A,B) do i=1,maxab if(A.gt.0) write(*,'(a)',advance='no') "^" if(B.gt.0) write(*,'(a)',advance='no') ">" print *, A = A - 1 B = B - 1 end do do i=1,(T-1-maxab)/2 print '(a)', ">" print '(a)', "<" end do if(up.eq.1) then print '(a)', ">" print '(a)', "<^" else print '(a)', "^" print '(a)', "v>" endif return end if end program main