#include <bits/stdc++.h>
// #define int long long
#define LL long long
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
const int N = 1010;
struct Node
{
int a, b, id;
}q[N];
signed main()
{
IOS;
int n;
cin >> n;
for (int i = 1; i <= n; i ++ ) q[i].id = i;
for (int i = 1; i <= n; i ++ ) cin >> q[i].a;
for (int i = 1; i <= n; i ++ ) cin >> q[i].b;
//johnson排序能使时间最少
sort(q + 1, q + n + 1, [&](Node& x, Node& y)
{
if (min(x.a, y.b) == min(x.b, y.a)) return x.a < y.a;
else return min(x.a, y.b) < min(x.b, y.a);
});
int A = 0, B = 0;
//求执行完第i个订单,A、B车间加工的时间
for (int i = 1; i <= n; i ++ )
{
A += q[i].a;
//max(A, B)表示第i个订单到B车间加工,必须要在A车间加工过并且B车间是空闲的。所以取最大值
B = max(A, B) + q[i].b;
}
cout << B << endl;
for (int i = 1; i <= n; i ++ ) cout << q[i].id << " ";
return 0;
}