You've got an undirected graph, consisting of *n* vertices and *m* edges. We will consider the graph's vertices numbered with integers from 1 to *n*. Each vertex of the graph has a color. The color of the *i*-th vertex is an integer *c*<sub class="lower-index">*i*</sub>.

Let's consider all vertices of the graph, that are painted some color *k*. Let's denote a set of such as *V*(*k*). Let's denote the value of the neighbouring color diversity for color *k* as the cardinality of the set *Q*(*k*) = {*c*<sub class="lower-index">*u*</sub> :  *c*<sub class="lower-index">*u*</sub> ≠ *k* and there is vertex *v* belonging to set *V*(*k*) such that nodes *v* and *u* are connected by an edge of the graph}.

Your task is to find such color *k*, which makes the cardinality of set *Q*(*k*) maximum. In other words, you want to find the color that has the most diverse neighbours. Please note, that you want to find such color *k*, that the graph has at least one vertex with such color.
The first line contains two space-separated integers *n*, *m* (1 ≤ *n*, *m* ≤ 10<sup class="upper-index">5</sup>) — the number of vertices end edges of the graph, correspondingly. The second line contains a sequence of integers *c*<sub class="lower-index">1</sub>, *c*<sub class="lower-index">2</sub>, ..., *c*<sub class="lower-index">*n*</sub> (1 ≤ *c*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">5</sup>) — the colors of the graph vertices. The numbers on the line are separated by spaces.

Next *m* lines contain the description of the edges: the *i*-th line contains two space-separated integers *a*<sub class="lower-index">*i*</sub>, *b*<sub class="lower-index">*i*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub>, *b*<sub class="lower-index">*i*</sub> ≤ *n*; *a*<sub class="lower-index">*i*</sub> ≠ *b*<sub class="lower-index">*i*</sub>) — the numbers of the vertices, connected by the *i*-th edge. 

It is guaranteed that the given graph has no self-loops or multiple edges.
'''input
3 1
13 13 4
1 2
'''
# I am back again, Mr. Inconsistent
from sys import stdin
from collections import defaultdict


def dfs(g, source, colors, visited, diversity):
	visited[source] = True
	for i in g[source]:
		if visited[i] == False:
			visited[i] = True
			if colors[source - 1] != colors[i - 1]:
				diversity[colors[source - 1]].add(colors[i - 1])
				diversity[colors[i - 1]].add(colors[source - 1])
			dfs(g, i, colors, visited, diversity)
			
	


def traversal(g, n, colors):
	visited = dict()
	diversity = defaultdict(set)

	for i in range(1, n + 1):
		visited[i] = False
	
	for i in colors:
		diversity[i]

	
	for i in g:
		if visited[i] == False:
			dfs(g, i, colors, visited, diversity)

	max_len = 0; color = float('inf')
	for c in diversity:
		if len(diversity[c]) > max_len:
			color =  c
			max_len = len(diversity[c])
		elif len(diversity[c]) == max_len:
			color =  min(color, c)
	print(color)




# main starts
n, m = list(map(int, stdin.readline().split()))
colors = list(map(int, stdin.readline().split()))
g = defaultdict(list)
for _ in range(m):
	a, b = list(map(int, stdin.readline().split()))
	g[a].append(b)
	g[b].append(a)
traversal(g, n, colors)