/*
* Problem :: 4307 / 개미
*
* Kind :: Math
*
* Insight
* - 개미가 모두 땅으로 떨어지는 가능한 시간 중
* 가장 빠른 시간은
* + 어느쪽이든 막대의 끝에서 가장 멀리 떨어진 개미가
* 가장 빨리 떨어질 때 까지 걸리는 시간이다
* # 어떤 개미가 자신과 가장 가까운 막대 끝으로 걸어가서 떨어지는 것이
* 그 개미에게 있어서 가장 빨리 떨어지는 방법이다
* -> 모든 개미가 자신과 가장 가까운 막대 끝으로 걸어가되
* 그 중 떨어지는데 가장 시간이 오래걸린 개미가 분명 있을 것이고,
* 이 때가 바로 모든 개미가 땅으로 떨어지는 가장 빠른 시간이다
*
* - 개미가 모두 땅으로 떨어지는 가능한 시간 중
* 가장 늦은 시간은...
* + 모든 개미의 방향을 사전에 정해주고 시뮬레이션을 돌려서 구해야 할려나...?
* # 근데 100,000 마리의 개미의 방향을 모두 정한다고?
* -> 딱 봐도 불가능할 것 같다
*
* - 두마리의 개미 a,b 가 있다고 하자
* a => <= b
* + 화살표의 방향대로 a 개미는 오른쪽으로, b 개미는 왼쪽으로 이동한다
* 그러면 어느순간 가운데서 충돌하게 된다
* 그리고 반대방향으로 이동할 것이다
* <= ab =>
* # a 개미가 늦게 떨어질까 아니면 b 개미가 늦게 떨어질까? <= 몰라
* 만약 c 개미가 a 개미 왼쪽에서 오른쪽방향으로
* d 개미가 b 개미 오른쪽에서 왼쪽으로 오고 있었다고 한다면
* c => a => <= b <= d
* 문제는 더욱 어려워진다...
* a 개미와 b 개미가 충돌하고, a 개미와 c 개미와 충돌하고, b 개미와 d 개미와 충돌하고,
* 다시 a 개미와 b 개미가 충돌하고...
* -> 그런데 우리는 개미가 모두 땅으로 떨어지는 가능한 시간 중
* 가장 늦은 시간을 구하고 있다
* 즉, 그때 가장 마지막에 떨어진 개미를 구하는 것이 아니다!!!
*
* - 이렇게 생각해보면
* a => <= b
* 에서, a 와 b 가 충돌한후
* + <= ab =>
* 처럼이 아니라
* <= ba =>
* 처럼 생각해볼 수 있다.
* # 즉, 두 개미가 충돌할 때 방향을 바꾸지 않고 서로를 통과하는 것이다
* 이렇게 생각해도 전체 개미의 움직임은 그 전과 같다!
* -> 그렇다면, 이 경우 떨어지는데 가장 오래걸리는 개미는
* 어느쪽이든 막대 끝에 가장 가깝께 위치한 개미이다 <= 다른 쪽 막대끝으로 이동
* 물론 그 개미가 진짜 실제로 가장 늦게 떨어지는 개미는 아니지만,
* 떨어지는데 걸리는 시간은 같을 것이기 때문이다
* <- 앞서 말했듯, 전체 개미들의 움직임은 똑같기 때문
*
* Point
* - 발상의 전환이 필요한 문제는 역시 어렵다 :(
* + 그만큼 풀었을 때 행복하지만 :)
*/
//
// BOJ
// ver.C++
//
// Created by GGlifer
//
// Open Source
#include <iostream>
#include <algorithm>
using namespace std;
#define endl '\n'
// Set up : Global Variables
/* None */
// Set up : Functions Declaration
/* None */
int main()
{
// Set up : I/O
ios::sync_with_stdio(false);
cin.tie(nullptr);
// Set up : Input
int T; cin >> T;
while (T--) {
int L, N;
cin >> L >> N;
int P[N];
for (int i=0; i<N; i++)
cin >> P[i];
// Process
/* fast = 개미가 모두 땅으로 떨어지는 가능한 시간 중 가장 빠른 시간 */
int fast = min(P[0], L-P[0]); /* 첫번째 개미로 초기화 */
/* slow = 개미가 모두 땅으로 떨어지는 가능한 시간 중 가장 늦은 시간 */
int slow = max(P[0], L-P[0]); /* 첫번째 개미로 초기화 */
for (int i=1; i<N; i++) {
/* 개미들의 가장 가까운 경계까지의 거리의 최대 */
fast = max(fast, min(P[i], L-P[i]));
/* 개미들의 가장 먼 경계까지의 거리의 최대 */
slow = max(slow, max(P[i], L-P[i]));
}
// Control : Output
cout << fast << ' ' << slow << endl;
}
}
// Helper Functions
/* None */