import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 配列を準備
		// int[] array = new int[N];
		// 最初からリスト
		List<Integer> list = new ArrayList<>();
		// for文でN回繰り返し
		for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		//Collections.reverse(list);
		//本当に反対にする必要があるか？
		// 大きい方から小さい方に？ 小さい方から大きい方に？⇒後で。

		// for(int i = 0; i < list.size();i++) {
		// 配列に対する操作であって、Collectionsに合わせたループがある
		boolean flag = true;
		int AliceMaxCount = 0;
		int BobMaxCount = 0;
		Iterator<Integer> i = list.iterator();
		while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		}
		System.out.println(Math.abs(AliceMaxCount - BobMaxCount));
		sc.close();
	}
} import java.util.ArrayList; ArrayList java.util import java.util.Collections; Collections java.util import java.util.Iterator; Iterator java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 配列を準備
		// int[] array = new int[N];
		// 最初からリスト
		List<Integer> list = new ArrayList<>();
		// for文でN回繰り返し
		for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		//Collections.reverse(list);
		//本当に反対にする必要があるか？
		// 大きい方から小さい方に？ 小さい方から大きい方に？⇒後で。

		// for(int i = 0; i < list.size();i++) {
		// 配列に対する操作であって、Collectionsに合わせたループがある
		boolean flag = true;
		int AliceMaxCount = 0;
		int BobMaxCount = 0;
		Iterator<Integer> i = list.iterator();
		while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		}
		System.out.println(Math.abs(AliceMaxCount - BobMaxCount));
		sc.close();
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 配列を準備
		// int[] array = new int[N];
		// 最初からリスト
		List<Integer> list = new ArrayList<>();
		// for文でN回繰り返し
		for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		//Collections.reverse(list);
		//本当に反対にする必要があるか？
		// 大きい方から小さい方に？ 小さい方から大きい方に？⇒後で。

		// for(int i = 0; i < list.size();i++) {
		// 配列に対する操作であって、Collectionsに合わせたループがある
		boolean flag = true;
		int AliceMaxCount = 0;
		int BobMaxCount = 0;
		Iterator<Integer> i = list.iterator();
		while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		}
		System.out.println(Math.abs(AliceMaxCount - BobMaxCount));
		sc.close();
	} main {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 配列を準備
		// int[] array = new int[N];
		// 最初からリスト
		List<Integer> list = new ArrayList<>();
		// for文でN回繰り返し
		for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		//Collections.reverse(list);
		//本当に反対にする必要があるか？
		// 大きい方から小さい方に？ 小さい方から大きい方に？⇒後で。

		// for(int i = 0; i < list.size();i++) {
		// 配列に対する操作であって、Collectionsに合わせたループがある
		boolean flag = true;
		int AliceMaxCount = 0;
		int BobMaxCount = 0;
		Iterator<Integer> i = list.iterator();
		while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		}
		System.out.println(Math.abs(AliceMaxCount - BobMaxCount));
		sc.close();
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc List<Integer> list = new ArrayList<>(); list new ArrayList<>() for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			list.add(sc.nextInt());
		} {
			list.add(sc.nextInt());
		} list.add(sc.nextInt()) list.add list sc.nextInt() sc.nextInt sc Collections.sort(list) Collections.sort Collections list boolean flag = true; flag true int AliceMaxCount = 0; AliceMaxCount 0 int BobMaxCount = 0; BobMaxCount 0 Iterator<Integer> i = list.iterator(); i list.iterator() list.iterator list while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		} i.hasNext() i.hasNext i {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		} if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			} flag {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} AliceMaxCount += i.next() AliceMaxCount i.next() i.next i flag = false flag false {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			} BobMaxCount += i.next() BobMaxCount i.next() i.next i flag = true flag true System.out.println(Math.abs(AliceMaxCount - BobMaxCount)) System.out.println System.out System System.out Math.abs(AliceMaxCount - BobMaxCount) Math.abs Math AliceMaxCount - BobMaxCount AliceMaxCount BobMaxCount sc.close() sc.close sc String[] args args public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 配列を準備
		// int[] array = new int[N];
		// 最初からリスト
		List<Integer> list = new ArrayList<>();
		// for文でN回繰り返し
		for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		//Collections.reverse(list);
		//本当に反対にする必要があるか？
		// 大きい方から小さい方に？ 小さい方から大きい方に？⇒後で。

		// for(int i = 0; i < list.size();i++) {
		// 配列に対する操作であって、Collectionsに合わせたループがある
		boolean flag = true;
		int AliceMaxCount = 0;
		int BobMaxCount = 0;
		Iterator<Integer> i = list.iterator();
		while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		}
		System.out.println(Math.abs(AliceMaxCount - BobMaxCount));
		sc.close();
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 配列を準備
		// int[] array = new int[N];
		// 最初からリスト
		List<Integer> list = new ArrayList<>();
		// for文でN回繰り返し
		for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		//Collections.reverse(list);
		//本当に反対にする必要があるか？
		// 大きい方から小さい方に？ 小さい方から大きい方に？⇒後で。

		// for(int i = 0; i < list.size();i++) {
		// 配列に対する操作であって、Collectionsに合わせたループがある
		boolean flag = true;
		int AliceMaxCount = 0;
		int BobMaxCount = 0;
		Iterator<Integer> i = list.iterator();
		while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		}
		System.out.println(Math.abs(AliceMaxCount - BobMaxCount));
		sc.close();
	}
} Main
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 配列を準備
		// int[] array = new int[N];
		// 最初からリスト
		List<Integer> list = new ArrayList<>();
		// for文でN回繰り返し
		for (int i = 0; i < N; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		//Collections.reverse(list);
		//本当に反対にする必要があるか？
		// 大きい方から小さい方に？ 小さい方から大きい方に？⇒後で。

		// for(int i = 0; i < list.size();i++) {
		// 配列に対する操作であって、Collectionsに合わせたループがある
		boolean flag = true;
		int AliceMaxCount = 0;
		int BobMaxCount = 0;
		Iterator<Integer> i = list.iterator();
		while (i.hasNext()) {
			if (flag) {
				// true なので Alice
				// 該当カードを取得する
				AliceMaxCount += i.next();
				//
				flag = false;
			} else {
				// Bob
				BobMaxCount += i.next();
				flag = true;
			}
		}
		System.out.println(Math.abs(AliceMaxCount - BobMaxCount));
		sc.close();
	}
}