按位与
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

给定一个长度为  的数组,求数组中的两个数,它们的按位与的值最大。对于结果,输出这两个数的下标(小的在前)。

若有多种结果,它们按位与获得的结果相同且都是最大值,则输出字典序最小的一组。

按位与的运算规则:把两个十进制数转化为二进制,依次比较两个二进制数的每一位,全部为1则为1,否则为0的规则,依次计算出一个新的二进制数

输入描述:

第一行一个整数 n (2\leq n\leq 10^6) 表示数组长度

第二行输入n个整数 a_1\sim a_n (1\leq a_i< 2^{30}),第i个数表示数组中的第i个位置的数

输出描述:

输出两个整数,表示所求的两个数的下标
示例1

输入

复制
5
4 5 1 2 3

输出

复制
1 2

说明

2\leq n\leq 10^6

1\leq a_i< 2^{30}

对于样例,我们可以得到4\&5=4,这是我们可以得到的最大值,于是我们输出下标12