import math
def ip():
return map(int,input().split())
def f(x):
t1=lst[:x]
t2=lst[x:]
if not t2:
return False,[]
i=0
j=0
res=[]
res.append(t2[0])
j+=1
for i in range(len(t1)):
res.append(t1[i])
if j<len(t2):
res.append(t2[j])
j+=1
else:
return False,[]
return True,res
# T=int(input())
T=1
for __ in range(T):
n=int(input())
lst=list(ip())
lst.sort()
lo=0
hi=n
ans=lo
while lo<=hi:
mid=(lo+hi)//2
if f(mid)[0]:
ans=mid
lo=mid+1
else:
hi=mid-1
print(ans)
print(*f(ans)[1])
aW1wb3J0IG1hdGgKZGVmIGlwKCk6CiAgICByZXR1cm4gbWFwKGludCxpbnB1dCgpLnNwbGl0KCkpCgoKZGVmIGYoeCk6CiAgICB0MT1sc3RbOnhdCiAgICB0Mj1sc3RbeDpdCiAgICBpZiBub3QgdDI6CiAgICAgICAgcmV0dXJuIEZhbHNlLFtdCiAgICBpPTAKICAgIGo9MAoKICAgIHJlcz1bXQogICAgcmVzLmFwcGVuZCh0MlswXSkKICAgIGorPTEKICAgIGZvciBpIGluIHJhbmdlKGxlbih0MSkpOgogICAgICAgIHJlcy5hcHBlbmQodDFbaV0pCiAgICAgICAgaWYgajxsZW4odDIpOgogICAgICAgICAgICByZXMuYXBwZW5kKHQyW2pdKQogICAgICAgICAgICBqKz0xCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlLFtdCiAgICByZXR1cm4gVHJ1ZSxyZXMKIyBUPWludChpbnB1dCgpKQpUPTEKZm9yIF9fIGluIHJhbmdlKFQpOgogICAgbj1pbnQoaW5wdXQoKSkKICAgIGxzdD1saXN0KGlwKCkpCiAgICBsc3Quc29ydCgpCiAgICBsbz0wCiAgICBoaT1uCgogICAgYW5zPWxvCiAgICB3aGlsZSBsbzw9aGk6CiAgICAgICAgbWlkPShsbytoaSkvLzIKICAgICAgICBpZiBmKG1pZClbMF06CiAgICAgICAgICAgIGFucz1taWQKICAgICAgICAgICAgbG89bWlkKzEKICAgICAgICBlbHNlOgogICAgICAgICAgICBoaT1taWQtMQogICAgcHJpbnQoYW5zKQogICAgcHJpbnQoKmYoYW5zKVsxXSkKICAgICAgICAgICAgCgo=