В детском саду в группе \(n\) детей, пронумерованных от \(1\) до \(n\). Воспитательница дала \(i\)-му ребенку \(a_i\) (\(1 \leq a_i \leq n\)) конфет. Дети сели в ряд в порядке от \(1\) до \(n\) слева направо и стали есть конфеты.
Во время поедания конфет \(i\)-й ребенок заметил, что нескольким детям, сидящим левее него, и нескольким детям, сидящим правее него, дали больше конфет, чем ему самому. Поэтому каждый ребенок посчитал по два числа \(l_i\) и \(r_i\) — количество детей слева от него, которым дали больше конфет, чем ему, и количество детей справа от него, которым дали больше конфет, чем ему.
Формально, \(l_i\) есть количество индексов \(j\) (\(1 \leq j < i\)), таких что \(a_i < a_j\), а \(r_i\) есть количество индексов \(j\) (\(i < j \leq n\)), таких что \(a_i < a_j\).
Каждый ребенок сказал воспитательнице посчитанные им числа \(l_i\) и \(r_i\). К сожалению, она уже забыла, сколько конфет кому она дала. Поэтому она просит помощи у вас — по массивам \(l\) и \(r\) определите, могла ли она дать детям конфеты так, что дети правильно посчитали свои значения \(l_i\) и \(r_i\), или кто-то из ребят точно ошибся, и она не могла так раздать конфеты. Если она могла раздать конфеты, то определите любой возможный способ того, как она могла это сделать.
Выходные данные
Если воспитательница не могла так раздать конфеты, и кто-то из детей точно ошибся в своих расчетах, то в единственной строке выведите «NO» (без кавычек).
Иначе в первой строке выведите «YES» (без кавычек), а во второй строке выведите \(n\) целых чисел \(a_1, a_2, \ldots, a_n\), разделённых пробелами — количества конфет, которые можно было выдать детям с номерами \(1, 2, \ldots, n\), соответственно. Обратите внимание, что эти числа не обязаны быть различными, но для них должно выполняться ограничение \(1 \leq a_i \leq n\). Также, должно быть выполнено, что количество детей левее \(i\)-го, которым дали больше конфет, чем ему, было равно \(l_i\), а количество детей правее \(i\)-го, которым дали больше конфет, чем ему, было равно \(r_i\). Если существует несколько способов раздать конфеты, найдите любой из них.
Примечание
В первом примере, если раздать по \(1\), \(3\), \(1\), \(2\), \(1\) конфет \(1\), \(2\), \(3\), \(4\), \(5\) ребенку соответственно, то все значения, посчитанные детьми, совпадут со значениями из входных данных. Например, \(5\)-му ребенку дали \(1\) конфету, левее него \(2\) детям дали по \(1\) конфете, \(1\) ребёнку \(2\) конфеты и \(1\) ребенку \(3\) конфеты, то есть всего \(2\) детям левее него дали больше конфет, чем ему.
Во втором примере раздать конфеты невозможно, так как \(4\)-й ребёнок точно ошибся в подсчете значения \(r_4\), ведь правее него нет детей, поэтому \(r_4\) точно должно быть равно \(0\).
В третьем примере все дети могли получить поровну конфет, поэтому все числа равны \(0\). Обратите внимание, что каждый ребенок должен получить хотя бы одну конфету.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
5 0 0 1 1 2 2 0 1 0 0
|
YES
1 3 1 2 1
|
|
2
|
4 0 0 2 0 1 1 1 1
|
NO
|
|
3
|
3 0 0 0 0 0 0
|
YES
1 1 1
|