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;
}
相关推荐
地平线开发者5 小时前
J6B vio scenario sample
算法
BothSavage17 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn17 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
烬羽19 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
先吃饱再说1 天前
判断回文字符串,从一行代码到双指针优化
算法
黄敬峰2 天前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术2 天前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六2 天前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程