Andrewid the Android is a galaxy-famous detective. He is now chasing a criminal hiding on the planet Oxa-5, the planet almost fully covered with water.

The only dry land there is an archipelago of *n* narrow islands located in a row. For more comfort let's represent them as non-intersecting segments on a straight line: island *i* has coordinates [*l*<sub class="lower-index">*i*</sub>, *r*<sub class="lower-index">*i*</sub>], besides, *r*<sub class="lower-index">*i*</sub> &lt; *l*<sub class="lower-index">*i* + 1</sub> for 1 ≤ *i* ≤ *n* - 1.

To reach the goal, Andrewid needs to place a bridge between each pair of adjacent islands. A bridge of length *a* can be placed between the *i*-th and the (*i* + 1)-th islads, if there are such coordinates of *x* and *y*, that *l*<sub class="lower-index">*i*</sub> ≤ *x* ≤ *r*<sub class="lower-index">*i*</sub>, *l*<sub class="lower-index">*i* + 1</sub> ≤ *y* ≤ *r*<sub class="lower-index">*i* + 1</sub> and *y* - *x* = *a*. 

The detective was supplied with *m* bridges, each bridge can be used at most once. Help him determine whether the bridges he got are enough to connect each pair of adjacent islands.
The first line contains integers *n* (2 ≤ *n* ≤ 2·10<sup class="upper-index">5</sup>) and *m* (1 ≤ *m* ≤ 2·10<sup class="upper-index">5</sup>) — the number of islands and bridges.

Next *n* lines each contain two integers *l*<sub class="lower-index">*i*</sub> and *r*<sub class="lower-index">*i*</sub> (1 ≤ *l*<sub class="lower-index">*i*</sub> ≤ *r*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">18</sup>) — the coordinates of the island endpoints.

The last line contains *m* integer numbers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*m*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">18</sup>) — the lengths of the bridges that Andrewid got.
n, m = map(int, input().split())

ils_r = [] #расстояние между соседними мостами (i-1 и i)
ils_len = [] # длина моста
ils_last = 0

for i in range(n):
	l , r = map(int, input().split())
	ils_r.append(l - ils_last - 1)
	ils_last = r
	ils_len.append(1 + r - l)

brd = list(map(int, input().split()))
ans = [0]*(n-1)


for che in range(len(ils_r)-1):
	r = min(ils_r[1:])
	ri = ils_r[1:].index(min(ils_r[1:]))

	#print('{0} - расстояние между двумя объектами'.format(r))

	bcope = [b-r for b in brd]


	best = max(bcope)
	best_index = -1

	for bi, bv in enumerate(bcope) :
		if ils_len[ri]+ils_len[ri+1] > bv > 0 and best >= bv:
			best = bv
			best_index = bi
			#print('Прошёл', bi)

	brd[best_index] = -1
	ans[ri] = best_index + 1

	#print('\t')
	
	ils_r[1+ri] = max(ils_r)+1


if min(ans) == 0:
	print('No')
else:
	print('Yes')
	print(' '.join(map(str, ans)))