1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef struct Node{
 4     int data;
 5     Node*next,*pre;
 6     int freq;
 7 }Node,*LinkList;
 8 Create(LinkList*L)
 9 {
10     int length,e;
11     Node*t,*r;
12     *L=(LinkList)malloc(sizeof(Node));
13     r=*L;
14     scanf("%d",&length);
15     for(int i=0;i<length;i++)
16     {
17         scanf("%d",&e);
18         t=(LinkList)malloc(sizeof(Node));
19         t->data=e;
20         r->next=t;
21         t->pre=r;
22         t->freq=0;
23         r=t;
24     }
25     r->next=*L;
26     (*L)->pre=r;
27 }
28 Visit(int e,LinkList L)
29 {
30     Node*t=L->next,*r=L->next;
31     while(t->data!=e) t=t->next;
32     t->freq++;
33     while(r->freq>=t->freq) r=r->next;
34     t->next->pre=t->pre;
35     t->pre->next=t->next;
36     r->pre->next=t;
37     t->pre=r->pre;
38     r->pre=t;
39     t->next=r;    
40 }
41 Order(LinkList L)
42 {
43     Node*t=L->next;
44     while(t!=L)
45     {
46         printf("%d ",t->data);
47         t=t->next;
48     }
49 }
50 int main()
51 {
52     LinkList L;
53     int n,e;
54     Create(&L);
55     scanf("%d",&n);
56     for(int i=1;i<=n;i++)
57     {
58         scanf("%d",&e);
59         Visit(e,L);
60     }
61     Order(L);
62     return 0;
63     
64 }