B. MEXor Mixup

time limit per test

2 seconds

memory limit per test

256 megabytes

Alice gave Bob two integers a and b (a>0 and b≥0). Being a curious boy, Bob wrote down an array of non-negative integers with MEX value of all elements equal to a and XOR value of all elements equal to b.

What is the shortest possible length of the array Bob wrote?

Recall that the MEX (Minimum EXcluded) of an array is the minimum non-negative integer that does not belong to the array and the XOR of an array is the bitwise XOR of all the elements of the array.

Input

The input consists of multiple test cases. The first line contains an integer t (1≤t≤5⋅104) --- the number of test cases. The description of the test cases follows.

The only line of each test case contains two integers a and b (1≤a≤3⋅105; 0≤b≤3⋅105) --- the MEX and XOR of the array, respectively.

Output

For each test case, output one (positive) integer --- the length of the shortest array with MEX a and XOR b. We can show that such an array always exists.

Example

Input

Copy

复制代码
5
1 1
2 1
2 0
1 10000
2 10000

Output

Copy

复制代码
3
2
3
2
3

Note

In the first test case, one of the shortest arrays with MEX 1 and XOR 1 is [0,2020,2021].

In the second test case, one of the shortest arrays with MEX 2 and XOR 1 is [0,1].

It can be shown that these arrays are the shortest arrays possible.

解题说明:此题是一道数学题,采用异或运算,可以先预处理一下,求出所有30000以下数字的异或值,MEX为a,即小于a的数都得出现,所以可以先将他们XOR起来。然后如果这些数的异或已经等于b了,那最小长度就是a,如果不等于,那么只要在找一个数,就可以异或得到b,长度为a+1,但如果这个数恰好等于a,就需要再找两个数,是这两个数异或等于a,长度为a+2。

cpp 复制代码
#include <stdio.h>
#include <string.h>
int a[300030];
int main()
{
	int t;
	scanf("%d", &t);
	int i;
	for (i = 1; i < 300030; i++)
	{
		a[i] = a[i - 1] ^ i;
	}
	while (t--)
	{
		int n, m;
		scanf("%d%d", &n, &m);
		if (m == a[n - 1])
		{
			printf("%d\n", n);
		}
		else if (m == a[n])
		{
			printf("%d\n", n + 2);
		}
		else
		{
			printf("%d\n", n + 1);
		}
	}
	return 0;
}
相关推荐
吃好睡好便好8 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
仰泳之鹅8 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
x_yeyue10 小时前
三角形数
笔记·算法·数论·组合数学
念何架构之路12 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星12 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑12 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光12 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩13 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_6294947313 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
ʚ希希ɞ ྀ14 小时前
单词拆分----dp
算法