def rob(x):
    rewards = [-1] * len(x)
    tracks = [-1] * len(x)
    rewards[0] = x[0]; rewards[1] = x[1]
    tracks[0] = 0; tracks[1] = 1
    best_end = 0 if rewards[0] > rewards[1] else 1
    for i in range(2, len(x)):
        for j in range(0,i-1):
            if rewards[j] + x[i] > rewards[i]:
                rewards[i] = rewards[j] + x[i]
                tracks[i] = j
        if rewards[i] > rewards[best_end]:
            best_end = i
    final_track = [best_end]
    final_reward = rewards[best_end]
    while tracks[best_end] != best_end:
        best_end = tracks[best_end]
        final_track.append(best_end)
    return final_reward, list(reversed(final_track))

print(rob([1, 3, 7, 3, 11, 9, 2, 10]))
print(rob([1, 3, 7, 3, 2, 9, 10, 1]))
print(rob([1, 2, 3]))
