#!/usr/bin/env python3 def najdi_dalsi_radek(k_projiti, aktualni_pozice): """Najde body na dalším řádku, seřazené správně cyklicky od aktuální pozice.""" if not k_projiti: return [] # Najdeme první řádek, který je vyšší než aktuální index_radku = -1 for i, bod in enumerate(k_projiti): if bod[1] > aktualni_pozice[1]: index_radku = i break # Pokud žádný vyšší řádek, cyklujeme zpět na nejnižší (jen pokud máme body) if index_radku == -1 and k_projiti: index_radku = 0 if index_radku == -1: return [] # Sbíráme všechny body na tomto řádku cilovy_radek = k_projiti[index_radku][1] row_points = [] for i in range(index_radku, len(k_projiti)): if k_projiti[i][1] != cilovy_radek: break row_points.append(k_projiti[i]) # Seřadíme body tak, aby šly "po schodech" od aktuálního sloupce # Nejdříve body s sloupcem >= aktuální, pak body s sloupcem < aktuální start_col = aktualni_pozice[0] pravá = [p for p in row_points if p[0] >= start_col] levá = [p for p in row_points if p[0] < start_col] return pravá + levá def main(): [R, S, x, y, N] = [int(i) for i in input().split(" ")] k_projiti = [] for _ in range(N): [xi, yi] = [int(i) for i in input().split(" ")] # posun všech bodů tak, aby lokomotiva byla v (0, 0) bod = ((xi - x) % S, (yi - y) % R) k_projiti.append(bod) # Seřadíme podle (řádek, sloupec) k_projiti.sort(key=lambda p: (p[1], p[0])) vysledek = [] aktualni_pozice = (0, 0) while k_projiti: radek = najdi_dalsi_radek(k_projiti, aktualni_pozice) if not radek: break # Pohyb dolů na první bod řádku pohyb_dolu = radek[0][1] - aktualni_pozice[1] vysledek.append("v" * (pohyb_dolu % R)) # Pohyb po bodech v řádku for j in range(len(radek)): if j == 0: pohyb_doprava = radek[0][0] - aktualni_pozice[0] else: pohyb_doprava = radek[j][0] - radek[j-1][0] vysledek.append(">" * (pohyb_doprava % S)) aktualni_pozice = radek[j] # Odstraníme navštívené body for bod in radek: k_projiti.remove(bod) print("".join(vysledek)) if __name__ == "__main__": main()