/*
n 只蚂蚁以每秒一米的速度在长为L的竿子上爬行。当每只蚂蚁到竿子的端点就会掉落。由于竿子太细,两只蚂蚁相对时,它们不能交错相过,只能各自反方向爬回去。
对吞每只蚂蚁,我们知道他们对于竿子左端的距离为x[I], 但不知道它的朝向。
计算所有蚂蚁落下竿子所需的时间。
*/
#include <stdio.h>
int min(int a, int b);
int max(int a, int b);
int max(int a, int b){
return a>b?a:b;
}
int min(int a, int b){
return a<b?a:b;
}
int main(){
// 最多有 100 只蚂蚁
int L,n,a[100];
int minT, maxT = 0;
int i;
scanf("%d%d", &L, &n);
for (i=0; i<n; i++){
scanf("%d", &a[i]);
}
minT = 0;
for (i=0; i<n; i++){
minT = max(minT, min(a[i],L-a[i]));
}
for (i=0; i<n; i++){
maxT = max(maxT, max(a[i], L-a[i]));
}
printf("%d %d", minT, maxT);
return 0;
}