#include<bits/stdc++.h>
#define IL inline
#define x first
#define y second
typedef long long ll;
using namespace std;
const	int N=200010;
int c[N];
vector<int>v[N][2];
int l[N];
int r[N];
bool st[N];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n,lx,rx;
		cin>>n>>lx>>rx;
		for(int i=1;i<=n;i++)
		{
			l[i]=r[i]=0;
			st[i]=0;
			v[i][0].clear();
			v[i][1].clear();
		}
		for(int i=1;i<=n;i++)
		{
			cin>>c[i];
			if(i<=lx)
			l[c[i]]++,v[c[i]][0].push_back(i);
			else
			r[c[i]]++,v[c[i]][1].push_back(i);
		}
		int cost=0;
		int num=n;
		for(int i=1;i<=n;i++)
		{
				while(l[i] && r[i])
				{
					l[i]--;
					r[i]--;
					lx--;
					rx--;
					v[i][0].pop_back();
					v[i][1].pop_back();
				}
		}
		if(lx==rx)
		{
			cout<<lx<<endl;
		}
		else if(lx<rx)
		{
			cost+=(rx+lx)/2-lx;
			cost+=lx;
			int left=(lx+rx)/2-lx;
			int tt=(lx+rx)/2-lx;
			for(int i=1;i<=n;i++)
			{
				while(v[c[i]][1].size()>=2 && tt)
				{
					left--;
					tt--;
					v[c[i]][1].pop_back();
					v[c[i]][1].pop_back();
					//v[c[i]][1].size()-=2;
				}
			}
			cost+=left;
			cout<<cost<<endl;
		}
		else
		{
			cost+=(lx+rx)/2-rx;
			cost+=rx;
			int left=(lx+rx)/2-rx;
			int tt=(lx+rx)/2-rx;
			for(int i=1;i<=n;i++)
			{
				while(v[c[i]][0].size()>=2 && tt)
				{
					tt--;
						v[c[i]][0].pop_back();
						v[c[i]][0].pop_back();
					left--;
				}
			}
			cost+=left;
			cout<<cost<<endl;	
		}
	}
    return 0;
}



