#include<bits/stdc++.h>
#define N 1010
using namespace std;
int n,head,tail,ans1[N],ans2;
struct node{
int a,b,m,num;
}obj[N];
int Max(int a,int b){return a>b?a:b;}
int Min(int a,int b){return a<b?a:b;}
bool cmp1(node x,node y){
return x.m<y.m;
}
bool cmp2(node x,node y){
return x.num<y.num;
}
int main(){
cin>>n;
tail=n+1;
for(int i=1;i<=n;++i){
cin>>obj[i].a;
obj[i].num=i;
}
for(int i=1;i<=n;++i){
cin>>obj[i].b;
obj[i].m=Min(obj[i].a,obj[i].b);
}
sort(obj+1,obj+1+n,cmp1);
for(int i=1;i<=n;++i){
if(obj[i].m==obj[i].a)ans1[++head]=obj[i].num;
else ans1[--tail]=obj[i].num;
}
sort(obj+1,obj+1+n,cmp2);
int A=0,t=0;
for(int i=1;i<=n;++i){
A+=obj[ans1[i]].a;
t=Max(t,A)+obj[ans1[i]].b;
}
cout<<t<<endl;
for(int i=1;i<=n;++i)cout<<ans1[i]<<" ";
cout<<endl;
return 0;
}