import java.util.*;
public class Main {
    public static void main(String[] args){
      // 入力
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int L = sc.nextInt();
      ArrayList<String> array = new ArrayList<>();
      for(int i = 0; i < N; i++){
        array.add(sc.next());
      }
      
      // 文字列生成
      String result = "";
      for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      }
      
      // 出力
      System.out.println(result);
    }
    
    // リスト内の最小文字列を探索する関数
    public static String getMinStr(ArrayList<String> array){
      String min = array.get(0);
      for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      }
      
      return min;
    }

} import java.util.*; util.* java public class Main {
    public static void main(String[] args){
      // 入力
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int L = sc.nextInt();
      ArrayList<String> array = new ArrayList<>();
      for(int i = 0; i < N; i++){
        array.add(sc.next());
      }
      
      // 文字列生成
      String result = "";
      for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      }
      
      // 出力
      System.out.println(result);
    }
    
    // リスト内の最小文字列を探索する関数
    public static String getMinStr(ArrayList<String> array){
      String min = array.get(0);
      for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      }
      
      return min;
    }

} Main public static void main(String[] args){
      // 入力
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int L = sc.nextInt();
      ArrayList<String> array = new ArrayList<>();
      for(int i = 0; i < N; i++){
        array.add(sc.next());
      }
      
      // 文字列生成
      String result = "";
      for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      }
      
      // 出力
      System.out.println(result);
    } main {
      // 入力
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int L = sc.nextInt();
      ArrayList<String> array = new ArrayList<>();
      for(int i = 0; i < N; i++){
        array.add(sc.next());
      }
      
      // 文字列生成
      String result = "";
      for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      }
      
      // 出力
      System.out.println(result);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int L = sc.nextInt(); L sc.nextInt() sc.nextInt sc ArrayList<String> array = new ArrayList<>(); array new ArrayList<>() for(int i = 0; i < N; i++){
        array.add(sc.next());
      } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
        array.add(sc.next());
      } {
        array.add(sc.next());
      } array.add(sc.next()) array.add array sc.next() sc.next sc String result = ""; result "" for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      } {
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      } String min = getMinStr(array); min getMinStr(array) getMinStr array result += min result min array.remove(array.indexOf(min)) array.remove array array.indexOf(min) array.indexOf array min System.out.println(result) System.out.println System.out System System.out result String[] args args // リスト内の最小文字列を探索する関数
    public static String getMinStr(ArrayList<String> array){
      String min = array.get(0);
      for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      }
      
      return min;
    } getMinStr {
      String min = array.get(0);
      for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      }
      
      return min;
    } String min = array.get(0); min array.get(0) array.get array 0 for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      } int i = 0; int i = 0; i 0 i < array.size() i array.size() array.size array i++ i++ i {
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      } {
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      } String target = array.get(i); target array.get(i) array.get array i if(min.compareTo(target) > 0){
          min = target;
        } min.compareTo(target) > 0 min.compareTo(target) min.compareTo min target 0 {
          min = target;
        } min = target min target return min; min ArrayList<String> array array public class Main {
    public static void main(String[] args){
      // 入力
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int L = sc.nextInt();
      ArrayList<String> array = new ArrayList<>();
      for(int i = 0; i < N; i++){
        array.add(sc.next());
      }
      
      // 文字列生成
      String result = "";
      for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      }
      
      // 出力
      System.out.println(result);
    }
    
    // リスト内の最小文字列を探索する関数
    public static String getMinStr(ArrayList<String> array){
      String min = array.get(0);
      for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      }
      
      return min;
    }

} public class Main {
    public static void main(String[] args){
      // 入力
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int L = sc.nextInt();
      ArrayList<String> array = new ArrayList<>();
      for(int i = 0; i < N; i++){
        array.add(sc.next());
      }
      
      // 文字列生成
      String result = "";
      for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      }
      
      // 出力
      System.out.println(result);
    }
    
    // リスト内の最小文字列を探索する関数
    public static String getMinStr(ArrayList<String> array){
      String min = array.get(0);
      for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      }
      
      return min;
    }

} Main
import java.util.*;
public class Main {
    public static void main(String[] args){
      // 入力
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int L = sc.nextInt();
      ArrayList<String> array = new ArrayList<>();
      for(int i = 0; i < N; i++){
        array.add(sc.next());
      }
      
      // 文字列生成
      String result = "";
      for(int i = 0; i < N; i++){
        String min = getMinStr(array);
        result += min;
        array.remove(array.indexOf(min));
      }
      
      // 出力
      System.out.println(result);
    }
    
    // リスト内の最小文字列を探索する関数
    public static String getMinStr(ArrayList<String> array){
      String min = array.get(0);
      for(int i = 0; i < array.size(); i++){
        String target = array.get(i);
        if(min.compareTo(target) > 0){
          min = target;
        }
      }
      
      return min;
    }

}