#!/usr/bin/env python3

class Dsu:
  def __init__(self, n):
    self.p = [i for i in range(n)]
    self.r = [0 for i in range(n)]

  def root(self, a):
    if self.p[a] != a:
      self.p[a] = self.root(self.p[a])
    return self.p[a]

  def merge(self, a, b):
    a = self.root(a)
    b = self.root(b)
    if self.r[a] > self.r[b]:
      self.p[b] = a
      self.r[a] += 1
    else:
      self.p[a] = b
      self.r[b] += 1

def main():
  n, m = map(int, input().split())

  h = list(map(int, input().split()))
  e = [[] for i in range(n)]
  for i in range(m):
    a, b = map(int, input().split())
    if h[a-1] >= h[b-1]: e[a-1] += [b-1]
    if h[b-1] >= h[a-1]: e[b-1] += [a-1]

  by_h = list(sorted([i for i in range(n)], key=lambda i: h[i]))
  best = 2**30

  for bi,i in enumerate(by_h):
    if bi > 0 and h[i] == h[by_h[bi-1]]: continue
    if h[i] > max(h[0],h[1]): break

    d = Dsu(n)
    for j in by_h[bi+1:]:
      for k in e[j]:
        if h[i] <= h[k]:
          d.merge(j, k)
      if d.root(0) == d.root(1):
        best = min(best, h[j] - h[i])
        break

  if best == 2**30:
    print('impossible')
  else:
    print(best)

if __name__ == '__main__':
  main()
