1 #include<algorithm>
2 #include<iostream>
3 #include<cstring>
4 #include<cstdio>
5 #include<queue>
6 using namespace std;
7 #define maxn 10000
8 int n,a[maxn],b[maxn],p[maxn],nxt1,nxt2,tot,x1,x2,y1,y2;
9 bool vis[maxn];
10 char ch;
11 inline void read(int &now)
12 {
13 int f=1; ch=getchar(); now=0;
14 while(ch>'9'||ch<'0') {if(ch=='-') f*=-1; ch=getchar();}
15 while(ch>='0'&&ch<='9') now=now*10+ch-'0',ch=getchar();
16 now*=f;
17 }
18
19 int main()
20 {
21 read(n);
22 for(int i=1;i<=n;i++) read(a[i]);
23 for(int i=1;i<=n;i++) read(b[i]);
24 for(int i=1;i<=n;i++)
25 {
26 if(a[i]!=b[i])
27 {
28 tot++;
29 if(tot==1) nxt1=i,x1=a[i],x2=b[i];
30 else nxt2=i,y1=a[i],y2=b[i];
31 }
32 }
33 if(tot==1)
34 {
35 for(int i=1;i<=n;i++)
36 if(i!=nxt1) p[i]=a[i],vis[p[i]]=1;
37 for(int i=1;i<=n;i++)
38 {
39 if(i==nxt1)
40 {
41 for(int j=1;j<=n;j++)
42 {
43 if(j!=x1&&j!=x2&&!vis[j])
44 {
45 p[i]=j;
46 break;
47 }
48 }
49 }
50 }
51 }
52 if(tot==2)
53 {
54 for(int i=1;i<=n;i++)
55 if(i!=nxt1&&i!=nxt2) p[i]=a[i],vis[p[i]]=1;
56 for(int i=1;i<=n;i++)
57 {
58 if(i==nxt1)
59 {
60 if(!vis[a[i]]) p[i]=a[i],vis[a[i]]=1;
61 else p[i]=b[i],vis[b[i]]=1;
62 }
63 if(i==nxt2)
64 {
65 if(!vis[a[i]]) p[i]=a[i],vis[a[i]]=1;
66 else p[i]=b[i],vis[b[i]]=1;
67 }
68 }
69 int cnt[maxn],if_=0;
70 for(int i=1;i<=n;i++) cnt[p[i]]++;
71 for(int i=1;i<=n;i++) if(cnt[i]>1) if_=1;
72 if(if_==1)
73 {
74 memset(vis,0,sizeof(vis));
75 memset(p,0,sizeof(p));
76 for(int i=1;i<=n;i++)
77 if(i!=nxt1&&i!=nxt2) p[i]=a[i],vis[p[i]]=1;
78 for(int i=1;i<=n;i++)
79 {
80 if(i==nxt1)
81 {
82 if(!vis[b[i]]) p[i]=b[i],vis[b[i]]=1;
83 else p[i]=a[i],vis[a[i]]=1;
84 }
85 if(i==nxt2)
86 {
87 if(!vis[b[i]]) p[i]=b[i],vis[b[i]]=1;
88 else p[i]=a[i],vis[a[i]]=1;
89 }
90 }
91 }
92 }
93 for(int i=1;i<=n;i++)
94 printf("%d ",p[i]);
95 return 0;
96 }