/* package whatever; // don't place package name! */ 
 
import  java.util.* ; 
import  java.lang.* ; 
import  java.io.* ; 
import  java.util.Random ; 
 
/* Name of the class has to be "Main" only if the class is public. */ 
class  Ideone
{ 
 
	public  static  void  testeComList( int  quantidade) { 
 
		long  inicio 
=  System .
currentTimeMillis ( ) ;   
		for  ( int  i =  0 ;  i <  quantidade;  i++ ) { 
			lista.add ( i) ; 
		} 
 
 
		long  fim 
=  System .
currentTimeMillis ( ) ;   
		System .
out .
println ( "Shuffle: Tempo com "  +  quantidade 
+  " elementos = "  +  ( fim 
-  inicio
) ) ; 	 	} 
 
	public  static  void  testeComSet( int  quantidade) { 
 
		Set< Integer>  set =  new  LinkedHashSet<> ( ) ; 
 
		long  inicio 
=  System .
currentTimeMillis ( ) ;   
		while  ( set.size ( )  <  quantidade)  { 
			set.add ( rnd.nextInt ( quantidade) ) ; 
		} 
 
		long  fim 
=  System .
currentTimeMillis ( ) ;   
		System .
out .
println ( "Set: Tempo com "  +  quantidade 
+  " elementos = "  +  ( fim 
-  inicio
) ) ; 	  
	} 
 
 
	{ 
 
		testeComList( 20 ) ; 
 
		testeComList( 20000 ) ; 
 
		testeComList( 200000 ) ; 
 
		testeComList( 20000000 ) ; 
 
		testeComSet( 20 ) ; 
 
		testeComSet( 20000 ) ; 
 
		testeComSet( 200000 ) ; 
 
		testeComSet( 20000000 ) ; 
 
	} 
} 
 
				LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7Cglwcml2YXRlIHN0YXRpYyBSYW5kb20gcm5kID0gbmV3IFJhbmRvbSgpOwoJCglwdWJsaWMgc3RhdGljIHZvaWQgdGVzdGVDb21MaXN0KGludCBxdWFudGlkYWRlKXsKCQlMaXN0IGxpc3RhID0gbmV3IEFycmF5TGlzdChxdWFudGlkYWRlKTsKCQoJCWxvbmcgaW5pY2lvID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CgkJCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBxdWFudGlkYWRlOyBpKyspewoJCQlsaXN0YS5hZGQoaSk7CgkJfQoJCQoJCUNvbGxlY3Rpb25zLnNodWZmbGUobGlzdGEpOwoJCQoJCWxvbmcgZmltID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CgkKCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNodWZmbGU6IFRlbXBvIGNvbSAiICsgcXVhbnRpZGFkZSArICIgZWxlbWVudG9zID0gIiArIChmaW0gLSBpbmljaW8pKTsJCgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0ZUNvbVNldChpbnQgcXVhbnRpZGFkZSl7CgkJCgkJU2V0PEludGVnZXI+IHNldCA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKCQkKCQlsb25nIGluaWNpbyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwoJCQoJCXdoaWxlIChzZXQuc2l6ZSgpIDwgcXVhbnRpZGFkZSkgewoJCQlzZXQuYWRkKHJuZC5uZXh0SW50KHF1YW50aWRhZGUpKTsKCQl9CgkJCgkJbG9uZyBmaW0gPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKCQkKCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNldDogVGVtcG8gY29tICIgKyBxdWFudGlkYWRlICsgIiBlbGVtZW50b3MgPSAiICsgKGZpbSAtIGluaWNpbykpOwkKCgl9CgkKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJCgkJdGVzdGVDb21MaXN0KDIwKTsKCQkKCQl0ZXN0ZUNvbUxpc3QoMjAwMDApOwoJCQoJCXRlc3RlQ29tTGlzdCgyMDAwMDApOwoJCQoJCXRlc3RlQ29tTGlzdCgyMDAwMDAwMCk7CgkJCgkJdGVzdGVDb21TZXQoMjApOwoJCQoJCXRlc3RlQ29tU2V0KDIwMDAwKTsKCQkKCQl0ZXN0ZUNvbVNldCgyMDAwMDApOwoJCQoJCXRlc3RlQ29tU2V0KDIwMDAwMDAwKTsKCQkKCX0KfQ==