output_description: If A and C can communicate, print `Yes`; if they cannot, print `No`.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      a b c d
attempt: N, M = map(int, input().split())
  e = [int(x) - 1 for x in input().split()]
  p = [i for i in range(N)]
  r = [0] * N
  
  
  def find(x):
      if p[x] != x:
          p[x] = find(p[x])
      return p[x]
  
  
  def unite(x, y):
      x = find(x)
      y = find(y)
      if x == y:
          return
  
      if r[x] < r[y]:
          p[x] = y
      else:
          p[y] = x
          if r[x] == r[y]:
              r[x] += 1
  
  
  def same(x, y):
      return find(x) == find(y)
  
  
  for i in range(M):
      x, y = map(int, input().split())
      unite(x - 1, y - 1)
  
  c = 0
  for i in range(N):
      if same(i, e[i]):
          c += 1
  
  print(c)
  
problem_description: Statement
  
  Three people, A, B and C, are trying to communicate using transceivers. They
  are standing along a number line, and the coordinates of A, B and C are a, b
  and c (in meters), respectively. Two people can directly communicate when the
  distance between them is at most d meters. Determine if A and C can
  communicate, either directly or indirectly. Here, A and C can indirectly
  communicate when A and B can directly communicate and also B and C can
  directly communicate.
samples: [{"input": "4 7 9 3", "output": "Yes\n    \n\nA and B can directly communicate, and also B and C can directly communicate,\nso we should print `Yes`.\n\n* * *"}, {"input": "100 10 1 2", "output": "No\n    \n\nThey cannot communicate in this case.\n\n* * *"}, {"input": "10 10 10 1", "output": "Yes\n    \n\nThere can be multiple people at the same position.\n\n* * *"}, {"input": "1 100 2 10", "output": "Yes"}]