#include <iostream>
#include <vector>
#define ll long long
using namespace std;
ostream& operator<<(ostream& os, vector<int>& input)
{
for (auto i : input)
{
os << i << " ";
}
return os;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
vector<int>a(100001);
vector<ll>t(100001);
vector<ll>tc(100001);
vector<bool>benneVanE(100001);
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> t[i];
for (int i = 2; i <= n; i++) cin >> a[i];
ll ans = 0;
for (int i = n; i >= 1; i--) {
if (t[i] > tc[i]) {
ans -= tc[i];
ans += t[i];
benneVanE[i] = true;
tc[a[i]] += t[i];
}
else {
tc[a[i]] += tc[i];
}
}
cout << ans << endl;
vector<int> ansv;
for (int i = 1; i <= n; i++)
{
if (benneVanE[i] && !benneVanE[a[i]]) ansv.push_back(i);
benneVanE[i] = benneVanE[i] || benneVanE[a[i]];
}
cout << ansv.size() << endl << ansv << endl;
return 0;
}
/*
8
5 5 7 1 2 3 2 4
1
1
2
2
2
3
3
-13
-4
-3 4 5 6
*/