Problem:
Score : 600 points

Problem Statement

Given are two sequences A and B, both of length N.
A and B are each sorted in the ascending order.
Check if it is possible to reorder the terms of B so that for each i (1 \leq i \leq N) A_i \neq B_i holds, and if it is possible, output any of the reorderings that achieve it.

Constraints

1\leq N \leq 2 \times 10^5

1\leq A_i,B_i \leq N

A and B are each sorted in the ascending order.

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 \cdots A_N
B_1 B_2 \cdots B_N

Output

If there exist no reorderings that satisfy the condition, print No.

If there exists a reordering that satisfies the condition, print Yes on the first line.
After that, print a reordering of B on the second line, separating terms with a whitespace.

If there are multiple reorderings that satisfy the condition, you can print any of them.

Sample Input 1

6
1 1 1 2 2 3
1 1 1 2 2 3

Sample Output 1

Yes
2 2 3 1 1 1

Sample Input 2

3
1 1 2
1 1 3

Sample Output 2

No

Sample Input 3

4
1 1 2 3
1 2 3 3

Sample Output 3

Yes
3 3 1 2

Solution in PHP (7.4.4) (judge verdict: Wrong Answer)

<?php
[$N] = fscanf(STDIN, "%d");

$A = fscanf(STDIN, str_repeat("%d", $N));
$B = fscanf(STDIN, str_repeat("%d",$N));

$max = max($A[$N-1], $B[$N-1]);
$zan = array_fill(1,$max,0);
$new = array_fill(1,$max,0);
$newsa = array_fill(1,$max,0);
for($i=0;$i<$N;$i++){
    $zan[$A[$i]]++;
    $new[$B[$i]]++;
    $newsa[$B[$i]]++;
}
for($i=1;$i<=$max;$i++) {
    if($N - $zan[$i] < $new[$i]){
        echo "No";
        exit;
    }
    $sa[$i] = ($N - $zan[$i] - $new[$i]) * 100 - $zan[$i];
    $newsa[$i] *=100;
    $newsa[$i] += intdiv($sa[$i], 100);
}

arsort($newsa);

$new_keys = array_keys($newsa);
asort($sa);

$ans = [];
$buff = [];
$a = -1;
$keyno = 0;
foreach($sa as $key => $valuea) {
    $value = $zan[$key];
    $back = -1;
    while($value>0){
        if($new_keys[$keyno] === $key){
            $back = $keyno;
            $keyno++;
        }
        while($new[$new_keys[$keyno]] > 0){
            $value--;
            $ans[$key][] = $new_keys[$keyno];
            $new[$new_keys[$keyno]]--;
            if($value === 0){
                break 2;
            }
        }
        $keyno++;
    }
    if($back !== -1){
        $keyno = $back;
    }
}
ksort($ans);
foreach($ans as $row){
    echo implode(" ", $row)." ";
}