#YDRS014C. 大鱼吃小鱼

大鱼吃小鱼

题目背景

小X今天在玩大鱼吃小鱼游戏,在玩游戏的时候,为了更好地玩好这款游戏,他决定用自己学过的算法知识去解决这个问题。

题目描述

一个狭长的水域中有 nn 条鱼,每个鱼有自身的重量 aia_i ,并且在这个大鱼吃小鱼游戏中,只有当自己体重严格小于 aia_i 时,才能被第 ii 条鱼吃掉,当体重为 aia_i 的鱼吃掉体重为 aja_j 的鱼之后,体重为 aia_i 的鱼的体重变为 ai=aiaja_i = a_i | a_j ,并且 aja_j 变为0,然后消失,由于狭长水域空间限制, 大鱼只能吃掉当前两边最近的鱼,现在开始大鱼吃小鱼游戏,在若干种中间和最终可能中,求出初始在每个位置的鱼的最大可能体重,并输出 nn 个体重的值。

输入格式

第一行输入一个数字 nn , 代表鱼的数量。

第二行输入一个长度为 nn 的数组 a1,a2,...,ana_1 , a_2 , ... , a_n , 代表初始状态下每只鱼的体重 。

输出格式

输出 nn 个数字,代表初始在每个位置的鱼的最终最大可能体重值。

样例 #1

样例输入 #1

5
3 2 1 4 9

样例输出 #1

3 3 1 7 15 

样例 #2

样例输入 #2

10
3 2 13 1 8 4 9 12 15 6

样例输出 #2

3 2 15 1 13 4 13 13 15 6 

提示

对于10%数据,满足 1n101 \leq n \leq 10

对于40%数据,满足 1n1031 \leq n \leq 10^3

对于100%数据,满足 1n105,1ai1091 \leq n \leq 10^5 , 1 \leq a_i \leq 10^9