import sys
input = sys.stdin.readline
def readList():
return list(map(int, input().split()))
def readInt():
return int(input())
def readInts():
return map(int, input().split())
def readStr():
return input().strip()
def solve():
n, A, B = readInt(), readList(), readList()
graph = [[] for _ in range(n)]
par = [-1] * n
for i in range(n):
if B[i] != -1:
graph[B[i]-1].append(i)
par[i] = B[i]-1
now, after = [], []
for i in range(n):
if B[i] == -1:
st = [(i, 0)]
while st:
node, exp = st.pop()
if exp:
if node == i:
now.append(node+1)
continue
if A[node] >= 0:
A[par[node]] += A[node]
now.append(node+1)
else:
after.append(node+1)
else:
st.append((node, 1))
for nei in graph[node]:
st.append((nei, 0))
print(sum(A))
print(*(now + after[::-1]))
return
solve()
746A - Compote | 318A - Even Odds |
550B - Preparing Olympiad | 939B - Hamster Farm |
732A - Buy a Shovel | 1220C - Substring Game in the Lesson |
452A - Eevee | 1647B - Madoka and the Elegant Gift |
1408A - Circle Coloring | 766B - Mahmoud and a Triangle |
1618C - Paint the Array | 469A - I Wanna Be the Guy |
1294A - Collecting Coins | 1227A - Math Problem |
349A - Cinema Line | 47A - Triangular numbers |
1516B - AGAGA XOOORRR | 1515A - Phoenix and Gold |
1515B - Phoenix and Puzzle | 155A - I_love_username |
49A - Sleuth | 1541A - Pretty Permutations |
1632C - Strange Test | 673A - Bear and Game |
276A - Lunch Rush | 1205A - Almost Equal |
1020B - Badge | 1353A - Most Unstable Array |
770A - New Password | 1646B - Quality vs Quantity |