A student of z-school found a kind of sorting called z-sort. The array a with n elements are z-sorted if two conditions hold:

  1. ai ≥ ai - 1 for all even i, 
  2. ai ≤ ai - 1 for all odd i > 1. 



For example the arrays [1,2,1,2] and [1,1,1,1] are z-sorted while the array [1,2,3,4] isn’t z-sorted.

Can you make the array z-sorted?

Input

The first line contains a single integer n (1 ≤ n ≤ 1000) — the number of elements in the array a.

The second line contains n integers ai (1 ≤ ai ≤ 109) — the elements of the array a.

Output

If it's possible to make the array a z-sorted print n space separated integers ai — the elements after z-sort. Otherwise print the only word "Impossible".

Examples

Input

4
1 2 2 1


Output

1 2 1 2


Input

5
1 3 2 2 5


Output

1 5 2 3 2
	//package yahia;
	import java.io.*;
	import java .util.*;
	public class kkkkk {
		public static void main (String [] YAHIA_MOSTAFA_ABASS_HESSIUN) throws IOException, InterruptedException {
			Scanner sc= new Scanner(System.in);
			int n =sc.nextInt();
			Integer [] x =new Integer[n];
			for (int i=0;i<n;++i)
				x[i]=sc.nextInt();
			Arrays.sort(x);
			Integer a [] =new Integer [n/2];
			int c =(n%2==0)?n/2:((n/2)+1);
			Integer b [] = new Integer [c];
			int d =(n%2==0)?c :c-1;
			for (int i =0;i<a.length;++i) 
				a[i]=x[i];
			for (int i =0;i<b.length;++i)
				b[i]=x[i+d];
			x=new Integer[n];
			int z ,v ,q;
			//System.out.println(Arrays.toString(a)+" "+Arrays.toString(b));
			z=q=0;v=b.length-1;
			while (q<a.length||v>=0) {
				if (q<a.length&&v>=0) {
					x[z++]=a[q++];
					x[z++]=b[v--];
				}else if (q<a.length)
					x[z++]=a[q++];
				else
					x[z++]=b[v--];
				//System.out.println(Arrays.toString(x));
			}
			for (int i : x)
				System.out.print(i+" ");
			}
		static class Scanner {
			StringTokenizer st;
			BufferedReader br;
			public Scanner(InputStream system) {
				br = new BufferedReader(new InputStreamReader(system));
			}
	 
			public Scanner(String file) throws Exception {
				br = new BufferedReader(new FileReader(file));
			}
	 
			public String next() throws IOException {
				while (st == null || !st.hasMoreTokens())
					st = new StringTokenizer(br.readLine());
				return st.nextToken();
			}
	 
			public String nextLine() throws IOException {
				return br.readLine();
			}
	 
			public int nextInt() throws IOException {
				return Integer.parseInt(next());
			}
	 
			public double nextDouble() throws IOException {
				return Double.parseDouble(next());
			}
	 
			public char nextChar() throws IOException {
				return next().charAt(0);
			}
	 
			public Long nextLong() throws IOException {
				return Long.parseLong(next());
			}
	 
			public boolean ready() throws IOException {
				return br.ready();
			}
	 
			public void waitForInput() throws InterruptedException {
				Thread.sleep(3000);
			}
		}
		}