#include<bits/stdc++.h>
using namespace std;
long long ans,k,t,n,m,h,b[200005],a[200005],yy;
int check(int x) {
int h=1;
while (h*h<x) h=h+2;
return h;
}
int ll(int x) {
int h=1;
while (h*h<x) h=h+2;
h=h-2;
if (x>=h*h+1&&x<=h*h+h+1) return x-(h*4-3);
if (x>=h*h+h+2&&x<=h*h+2*h+2) return x-(h*4-1);
if (x>=h*h+2*h+3&&x<=h*h+3*h+3) return x-(h*4+1);
if (x>=h*h+3*h+4&&x<=h*h+4*h+4) return x-(h*4+3);
}
int main(){
scanf("%lld%lld",&n,&m);
for (int i=1;i<=m;i++) scanf("%lld",&a[i]);
m++;
a[m]=1;
sort(a+1,a+m+1);
for (int i=2;i<=m;i++) {
t=i-1;
b[i]=a[i];
yy=check(a[i]);
while (yy==check(a[t])&&t>0) {
b[i]=min(b[i],b[t]+a[i]-a[t]+1);
t--;
}
int hh=t;
yy=check(a[hh]);
if (hh>0) while (yy==check(a[t])&&t>0) {
b[i]=min(b[i],b[t]+min(abs(ll(a[i])-a[t])+1,abs(a[i]-a[t])));
t--;
}
yy=check(a[i]);
if (a[i]==yy*yy&&a[t]==(yy-2)*(yy-2)) b[i]=min(b[i],b[t]+2);
}
if (a[m]==n) {
printf("%lld",ans);
return 0;
}
t=m;
ans=n;
yy=check(a[m]);
while (yy==check(a[t])&&t>0) {
ans=min(ans,b[t]+n-a[t]);
t--;
}
yy=check(a[t]);
while (yy==check(a[t])&&t>0) {
ans=min(ans,b[t]+n-a[t]);
t--;
}
yy=check(a[m]);
if (a[m]==yy&&a[m]==(yy-2)^2) b[m]=min(b[m],b[t]+2);
for (int i=1;i<=m;i++) cout<<a[i]<<" "<<b[i]<<endl;
printf("%lld",ans);
}