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()
    # print(lst)
    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)
    if ans==0:
        print(*lst)
        continue
    print(*f(ans)[1])
            

