#include<bits/stdc++.h>
#define matsuri pair<int,int>
#define iris 1000000007
using namespace std;

vector<int> G[111];
matsuri arr[11111];
int aoi[111][111],c[111],ans[11111];
bool v[111];

void dfs(int a,int f)
{
	v[a]=1;
	for(int b:G[a])
	{
		if(b==f)
			continue;
		int e=max(aoi[a][b], aoi[b][a]);
		if(ans[e]==0)
		{
			if(aoi[a][b])
				ans[e]=1;
			else
				ans[e]=2;
		}
		if(!v[b])
			dfs(b,a);
	}
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int n,m,i,a,b;
	
	cin>>n>>m;
	for(i=1;i<=m;i++)
	{
		cin>>a>>b;
		arr[i]={a,b};
		aoi[a][b]=i;
	}
	for(i=1;i<=n;i++)
	{
		cin>>c[i];
	}
	for(i=1;i<=m;i++)
	{
		a=arr[i].first;
		b=arr[i].second;
		if(c[a]==c[b])
		{
			G[a].emplace_back(b);
			G[b].emplace_back(a);
		}
		else if(c[a]>c[b])
			ans[i]=1;
		else
			ans[i]=2;
	}
	for(i=1;i<=n;i++)
		if(!v[i])
			dfs(i,0);
	for(i=1;i<=m;i++)
	{
		if(ans[i]==1)
			cout<<"->\n";
		else
			cout<<"<-\n";
	}
	
	return 0;
}

#include <bits/stdc++.h>

#define rep(i,n) for(int i=0;i<n;++i)
#define repn(i,n) for(int i=1;i<=n;++i)
#define LL long long
#define pii pair <int,int>
#define fi first
#define se second
#define pb push_back
#define mpr make_pair

using namespace std;

const LL MOD=1e9+7;

int n,m,c[110],depth[110],ans[10010];
vector <pair <pii,int> > g[110];
vector <pii> e;
bool vis[110];

void dfs(int pos,int par,int d)
{
	vis[pos]=true;
	depth[pos]=d;
	bool bk=false;
	rep(i,g[pos].size())
	{
		if(g[pos][i].fi.fi==par&& !bk)
		{
			bk=true;
			continue;
		}
		if(vis[g[pos][i].fi.fi])
		{
			if(depth[g[pos][i].fi.fi]<d) ans[g[pos][i].fi.se]=(g[pos][i].se==0 ? 1:2);
		}
		else
		{
			ans[g[pos][i].fi.se]=(g[pos][i].se==0 ? 1:2);
			dfs(g[pos][i].fi.fi,pos,d+1);
		}
	}
}

int main()
{
	cin>>n>>m;
	int x,y;
	rep(i,m)
	{
		scanf("%d%d",&x,&y);
		e.pb(mpr(x,y));
	}
	repn(i,n) scanf("%d",&c[i]);
	rep(i,m)
	{
		if(c[e[i].fi]>c[e[i].se]) ans[i]=1;//->
		else if(c[e[i].fi]<c[e[i].se]) ans[i]=2;//<-
		else
		{
			g[e[i].fi].pb(mpr(mpr(e[i].se,i),0));
			g[e[i].se].pb(mpr(mpr(e[i].fi,i),1));
		}
	}
	repn(i,n)
	{
		if(vis[i]) continue;
		dfs(i,0,1);
	}
	rep(i,m) puts(ans[i]==1 ? "->":"<-");
	return 0;
}