Problem: B: Pivots

problem

Given a permutation of length N, a_1, a_2, ..., a_N, which is a permutation of integers from 1 to N. Also, Q queries are given in order for this permutation. In the i-th query, you have to do the following:

* The value q_i (1 \ leq q_i \ leq N) is given. In the permutation \\ {a_1, a_2, ..., a_N \\}, where L is the permutation on the left side of q_i and R is the permutation on the right side of q_i, the original permutation L \\ q_i \\ R is R \\ Change to q_i \\ L. That is, when q_ {i} = a_j, the permutations \\ {a_1, ..., a_ {j-1}, a_j, a_ {j + 1}, ..., a_N \\} are \\ { Change to a_ {j + 1}, ..., a_N, a_j, a_1, ..., a_ {j-1} \\}.



The permutations L and R may be empty. For example, if L is empty, change q_i \\ R to R \\ q_i. The same is true when R is empty.

Output the permutation after processing these Q queries in order for the given permutation on one line.

Input format


N Q
a_1 a_2 ... a_N
q_1 q_2 ... q_Q


All inputs are integers.

The first row gives the number of elements in the permutation N and the number of queries Q, separated by blanks. In the second line, permutations a_1, a_2, ..., a_N, in which integers from 1 to N are rearranged, are given separated by blanks. The third line gives Q queries, separated by blanks. q_i represents the i-th query.

Constraint

* 1 \ leq N \ leq 10 ^ 5
* 1 \ leq Q \ leq 10 ^ 5
* 1 \ leq a_i \ leq N
* a_i is different
* 1 \ leq q_i \ leq N



Output format

Output the permutation after processing all the queries in order on one line.

Input example 1


5 2
1 5 3 2 4
5 2


Output example 1


4 5 1 2 3

* The first query changes the permutation to \\ {3, 2, 4, 5, 1 \\}.
* The second query changes the permutation to \\ {4, 5, 1, 2, 3 \\}.



Input example 2


5 1
1 2 3 4 5
Five


Output example 2


5 1 2 3 4





Example

Input

5 2
1 5 3 2 4
5 2


Output

4 5 1 2 3

Solution (in JAVA):

Solution:
import java.util.*;

public class Main {
     public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int q = sc.nextInt();
        DoubleList[] lists = new DoubleList[n];
        for (int i = 0; i < n; i++) {
            lists[i] = new DoubleList(i);
        }
        if (n == 1) {
            System.out.println(lists[0].idx + 1);
            return;
        }
        int prev = sc.nextInt() - 1;
        int start = prev;
        for (int i = 1; i < n; i++) {
            int x = sc.nextInt() - 1;
            lists[prev].right = x;
            lists[x].left = prev;
            prev = x;
        }
        int end = prev;
        for (int i = 0; i < q; i++) {
            int idx = start;
            int x = sc.nextInt() - 1;
            if (x == end) {
                end = lists[x].left;
                lists[end].right = -1;
                lists[x].left = -1;
                lists[x].right = start;
                lists[start].left = x;
                start = x;
            } else if (x == start) {
                start = lists[x].right;
                lists[start].left = -1;
                lists[x].right = -1;
                lists[x].left = end;
                lists[end].right = x;
                end = x;
            } else {
                lists[end].right = x;
                lists[start].left = x;
                int nextEnd = lists[x].left;
                int nextStart = lists[x].right;
                lists[x].right = start;
                lists[x].left = end;
                end = nextEnd;
                start = nextStart;
                lists[start].left = -1;
                lists[end].right = -1;
            }
        }
        int idx = start;
        StringBuilder sb = new StringBuilder();
        while (idx != -1) {
            if (idx != start) {
                sb.append(" ");
            }
            sb.append(lists[idx].idx + 1);
            idx = lists[idx].right;
        }
        System.out.println(sb);
    }
    
    static class DoubleList {
        int idx;
        int left;
        int right;
        
        public DoubleList(int idx) {
            this.idx = idx;
            this.left = -1;
            this.right = -1;
        }
    }
}