D. Three Activities

time limit per test

2 seconds

memory limit per test

256 megabytes

Winter holidays are coming up. They are going to last for n days.

During the holidays, Monocarp wants to try all of these activities exactly once with his friends:

  • go skiing;
  • watch a movie in a cinema;
  • play board games.

Monocarp knows that, on the i-th day, exactly ai friends will join him for skiing, bi friends will join him for a movie and ci friends will join him for board games.

Monocarp also knows that he can't try more than one activity in a single day.

Thus, he asks you to help him choose three distinct days x,y,z in such a way that the total number of friends to join him for the activities (ax+by+cz) is maximized.

Input

The first line contains a single integer t (1≤t≤104) — the number of testcases.

The first line of each testcase contains a single integer n (3≤n≤105) — the duration of the winter holidays in days.

The second line contains n integers a1,a2,…,an (1≤ai≤108) — the number of friends that will join Monocarp for skiing on the i-th day.

The third line contains n integers b1,b2,…,bn (1≤bi≤108) — the number of friends that will join Monocarp for a movie on the i-th day.

The fourth line contains n integers c1,c2,…,cn (1≤ci≤108) — the number of friends that will join Monocarp for board games on the i-th day.

The sum of n over all testcases doesn't exceed 105.

Output

For each testcase, print a single integer — the maximum total number of friends that can join Monocarp for the activities on three distinct days.

Example

Input

Copy


4

3

1 10 1

10 1 1

1 1 10

4

30 20 10 1

30 5 15 20

30 25 10 10

10

5 19 12 3 18 18 6 17 10 13

15 17 19 11 16 3 11 17 17 17

1 17 18 10 15 8 17 3 13 12

10

17 5 4 18 12 4 11 2 16 16

8 4 14 19 3 12 6 7 5 16

3 4 8 11 10 8 10 2 20 3

Output

Copy

30
75
55
56

Note

In the first testcase, Monocarp can choose day 2 for skiing, day 1 for a movie and day 3 for board games. This way, a2=10 friends will join him for skiing, b1=10 friends will join him for a movie and c3=10 friends will join him for board games. The total number of friends is 30.

In the second testcase, Monocarp can choose day 1 for skiing, day 4 for a movie and day 2 for board games. 30+20+25=75 friends in total. Note that Monocarp can't choose day 1 for all activities, because he can't try more than one activity in a single day.

In the third testcase, Monocarp can choose day 2 for skiing, day 3 for a movie and day 7 for board games. 19+19+17=55 friends in total.

In the fourth testcase, Monocarp can choose day 1 for skiing, day 4 for a movie and day 9 for board games. 17+19+20=56 friends in total.

解题说明:此题是一道标准的动态规划题,只能选择三天,而且确保之和最大,可采用三层循环进行求解。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 100010;
int f[8], a[3][N];
int n;
int main()
{
	int t; cin >> t;
	while (t--)
	{
		memset(f, 0, sizeof f);
		cin >> n;
		for (int i = 0; i < 3; i++)
		{
			for (int j = 1; j <= n; j++)
			{
				cin >> a[i][j];
			}
		}
		for (int i = 1; i <= n; i++)
		{
			for (int j = 7; j > 0; j--)
			{
				for (int k = 0; k < 3; k++)
				{
					if ((j >> k) & 1)
					{
						f[j] = max(f[j], f[j - (1 << k)] + a[k][i]);
					}
				}
			}
		}
		cout << f[7] << endl;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值