#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define all(x) x.begin(), x.end()
#define X first
#define Y second
#define MOD (ll) 1000000007
#define rd(l, r) uniform_int_distribution<ll> (l, r) (rng)
#define eb(x) emplace_back(x)
#define rsz resize
#define sz size
#define pii pair<int,int>
using namespace std;
struct wall{
int h;
int p;
int ind;
bool operator < (const wall &sth) {
if ( h == sth.h )
return p > sth.p;
return h < sth.h;
}
};
int n;
vector<pii> a;
vector<wall> b;
void read(){
#ifdef LOCAL
freopen( "test.inp", "r", stdin );
// freopen( "test.out", "w", stdout );
#endif
cin >> n;
a.rsz(n);
for ( int i = 0; i < n; ++i ){
cin >> a[i].X;
a[i].Y = i;
}
b.rsz(n);
for ( int i = 0; i < n; ++i ){
cin >> b[i].h >> b[i].p;
b[i].ind = i;
}
}
void solve(){
sort(all(a));
sort(all(b));
vector<int> ans(n, -1);
priority_queue<pii> pq;
int j = n;
ll s = 0;
for ( int i = n-1; i >= 0; --i ){
while ( j > 0 && b[j-1].h >= a[i].X ){
--j;
pq.push({b[j].p, b[j].ind});
}
if ( pq.sz() ){
s += pq.top().X;
ans[a[i].Y] = pq.top().Y + 1;
pq.pop();
}
}
cout << s << '\n';
for ( int i = 0; i < n; ++i )
if ( ans[i] == -1 ){
ans[i] = pq.top().Y + 1;
pq.pop();
}
for ( int i : ans )
cout << i << ' ';
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
read();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIFggZmlyc3QKI2RlZmluZSBZIHNlY29uZAojZGVmaW5lIE1PRCAobGwpIDEwMDAwMDAwMDcKI2RlZmluZSByZChsLCByKSB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248bGw+IChsLCByKSAocm5nKQojZGVmaW5lIGViKHgpIGVtcGxhY2VfYmFjayh4KQojZGVmaW5lIHJzeiByZXNpemUKI2RlZmluZSBzeiBzaXplCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgd2FsbHsKCWludCBoOwoJaW50IHA7CglpbnQgaW5kOwoJYm9vbCBvcGVyYXRvciA8IChjb25zdCB3YWxsICZzdGgpIHsKCQlpZiAoIGggPT0gc3RoLmggKQoJCQlyZXR1cm4gcCA+IHN0aC5wOwoJCXJldHVybiBoIDwgc3RoLmg7Cgl9Cn07CgppbnQgbjsKdmVjdG9yPHBpaT4gYTsKdmVjdG9yPHdhbGw+IGI7Cgp2b2lkIHJlYWQoKXsKCSNpZmRlZiBMT0NBTAoJCWZyZW9wZW4oICJ0ZXN0LmlucCIsICJyIiwgc3RkaW4gKTsKLy8JCWZyZW9wZW4oICJ0ZXN0Lm91dCIsICJ3Iiwgc3Rkb3V0ICk7CgkjZW5kaWYJCgljaW4gPj4gbjsKCWEucnN6KG4pOwoJZm9yICggaW50IGkgPSAwOyBpIDwgbjsgKytpICl7CgkJY2luID4+IGFbaV0uWDsKCQlhW2ldLlkgPSBpOwoJfQoJYi5yc3oobik7Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBuOyArK2kgKXsKCQljaW4gPj4gYltpXS5oID4+IGJbaV0ucDsKCQliW2ldLmluZCA9IGk7Cgl9Cn0KCnZvaWQgc29sdmUoKXsKCXNvcnQoYWxsKGEpKTsKCXNvcnQoYWxsKGIpKTsKCXZlY3RvcjxpbnQ+IGFucyhuLCAtMSk7Cglwcmlvcml0eV9xdWV1ZTxwaWk+IHBxOwoJaW50IGogPSBuOwoJbGwgcyA9IDA7Cglmb3IgKCBpbnQgaSA9IG4tMTsgaSA+PSAwOyAtLWkgKXsKCQl3aGlsZSAoIGogPiAwICYmIGJbai0xXS5oID49IGFbaV0uWCApewoJCQktLWo7CgkJCXBxLnB1c2goe2Jbal0ucCwgYltqXS5pbmR9KTsKCQl9CgkJaWYgKCBwcS5zeigpICl7CgkJCXMgKz0gcHEudG9wKCkuWDsKCQkgCWFuc1thW2ldLlldID0gcHEudG9wKCkuWSArIDE7CgkJCXBxLnBvcCgpOwoJCX0KCX0KCWNvdXQgPDwgcyA8PCAnXG4nOwoJZm9yICggaW50IGkgPSAwOyBpIDwgbjsgKytpICkKCQlpZiAoIGFuc1tpXSA9PSAtMSApewoJCQlhbnNbaV0gPSBwcS50b3AoKS5ZICsgMTsKCQkJcHEucG9wKCk7CgkJfQoJZm9yICggaW50IGkgOiBhbnMgKQoJCWNvdXQgPDwgaSA8PCAnICc7Cn0KCmludCBtYWluKCl7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwkKCWNpbi50aWUoMCk7IGNvdXQudGllKDApOwoJcmVhZCgpOwoJc29sdmUoKTsKCXJldHVybiAwOwp9Cg==