package rene.util.sort; import java.io.*; import java.util.*; /** Quick sort implementation. Sorts an array or a vector of SortObject. */ public class Sorter { static public void sort (SortObject v[]) { QuickSort(v,0,v.length-1); } static public void sort (SortObject v[], int n) { QuickSort(v,0,n-1); } static public void sort (Vector v) { SortObject o[]=new SortObject[v.size()]; v.copyInto(o); sort(o); for (int i=0; i<o.length; i++) v.setElementAt(o[i],i); } static public void QuickSort (SortObject a[], int lo0, int hi0) { int lo = lo0; int hi = hi0; SortObject mid; if ( hi0 > lo0) { mid = a[ ( lo0 + hi0 ) / 2 ]; while( lo <= hi ) { while( ( lo < hi0 ) && ( a[lo].compare(mid)<0 ) ) ++lo; while( ( hi > lo0 ) && ( a[hi].compare(mid)>0 ) ) --hi; if( lo <= hi ) { swap(a, lo, hi); ++lo; --hi; } } if( lo0 < hi ) QuickSort( a, lo0, hi ); if( lo < hi0 ) QuickSort( a, lo, hi0 ); } } static private void swap (SortObject a[], int i, int j) { SortObject T; T = a[i]; a[i] = a[j]; a[j] = T; } static public void QuickSort (Object a[], int lo0, int hi0) { int lo = lo0; int hi = hi0; SortObject mid; if ( hi0 > lo0) { mid = (SortObject) a[ ( lo0 + hi0 ) / 2 ]; while( lo <= hi ) { while( ( lo < hi0 ) && ( ((SortObject)a[lo]).compare(mid)<0 ) ) ++lo; while( ( hi > lo0 ) && ( ((SortObject)a[hi]).compare(mid)>0 ) ) --hi; if( lo <= hi ) { swap(a, lo, hi); ++lo; --hi; } } if( lo0 < hi ) QuickSort( a, lo0, hi ); if( lo < hi0 ) QuickSort( a, lo, hi0 ); } } static private void swap (Object a[], int i, int j) { Object T; T = a[i]; a[i] = a[j]; a[j] = T; } public static void main (String args[]) throws IOException // Sort the incoming lines and remove doublicates { BufferedReader in=new BufferedReader( new InputStreamReader(System.in)); Vector v=new Vector(); while (true) { String line=in.readLine(); if (line==null) break; v.addElement(new SortString(line)); } in.close(); sort(v); Enumeration e=v.elements(); String last=null; while (e.hasMoreElements()) { String s=((SortString)e.nextElement()).toString(); if (last==null || !s.equals(last)) { System.out.println(s); last=s; } } } }