最短路
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定长度为 n 的数列 a,如果 (按位与),则在 i,j 之间存在一条长度为 的边,求 1 至所有点的最短路。

输入描述:

第一行一个正整数 n。

接下来一行 n 个整数

输出描述:

输出一行 n 个整数,第 i 个为 1 到 i 的最短路长度。不能到达输出 -1。
示例1

输入

复制
5
1 5 6 7 8

输出

复制
0 6 17 8 -1

说明

对于 20\% 的数据, n\leq 10

对于 40\% 的数据, n\leq 10^3

对于另外 20\% 的数据, 所有的 a_i 均可表示为 2^x+2^y 的形式。

对于 100\% 的数据, 1\leq n\leq 10^5,0\leq a_i\leq 2^{30}