#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int N;
ll be1;
vector<int> ellista[100005];
vector<ll> tevek;
pair<ll, ll> ans[100005]; //benne, nincs benne
pair<ll, ll> Mely(int cs)
{
pair<ll, ll> akt; akt.first=0; akt.second=0;
akt.first=tevek[cs-1];
for(int a:ellista[cs])
{
//cout << cs << ":" << a << "\n";
pair<ll, ll> uj;
uj = Mely(a);
//akt.first+=uj.second;
akt.second += max(uj.first, uj.second);
}
ans[cs]=akt;
return akt;
}
vector<int> ki;
void Mely2(int cs)
{
if(ans[cs].first>ans[cs].second)
ki.push_back(cs);
else
{
for(int a:ellista[cs])
{
Mely2(a);
}
}
}
int main()
{
cin >> N;
for(int i = 0; i < N; i++)
{
cin >> be1;
tevek.push_back(be1);
}
for(int i = 2; i <= N; i++)
{
cin >> be1;
ellista[be1].push_back(i);
}
Mely(1);
/*for(int i = 1; i <= N; i++)
{
cout << i << ":" << ans[i].first << " " << ans[i].second << "\n";
}*/
cout << max(ans[1].first, ans[1].second) << "\n";
Mely2(1);
cout << ki.size() << "\n";
for(int a:ki)
cout << a << " "; cout << "\n";
return 0;
}