Diferență între revizuiri ale paginii „Programare Orientată Obiect (curs) - Seria C”

De la WikiLabs
Jump to navigationJump to search
Linia 2: Linia 2:
  
 
'''4c 61 20 6d 75 6c 74 69 20 61 6e 69 20 21'''
 
'''4c 61 20 6d 75 6c 74 69 20 61 6e 69 20 21'''
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@'@@@@@@@@@@#@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@+@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@#@@@@@@@@@@#@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@+@#'+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@#@@@@@@@@@@#@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@;#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@#@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@+@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@+@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@#@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+#+#@@@@@@@+@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@#:+#@@@@@@@@+@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@#@@@@@@@@+#@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@#@@@@@@@;@+@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@#@@@@@@@#@@@@@@@@@+@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@#@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@+@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@'@@@@@@@@@@@@@@@@#@@@@@@@@#@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@'@@@@@@@@@@@@@@@@+@@@@@@@@+@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@#@@@@@#@@@@@@@@@@@@@@@@@@@@@@@#@@@@+@@@@@@@@@@@@@@@@'@@@@@@@@'@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@,@@@@'@@@@@@@@@@@@@@@@@@@@@@@#@@@@+@@@@@@@@@@@@@@@@'@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@+@@@@@@@@@@@@@@@#+@@@@@@@@+@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@+@@@@@@@@@@@@@@@@#@@@@@@@@#@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@#@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@#@@@@@@@@@@@@@@@@@#@@@@@@@#@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@+#@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@#@@@@@@@@@@@@@@@@#@@@@@@@@#@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@#@@@#@@@@@@@@@#@@@@@@@@#@@@@@@@@#@@@@@@+@@#@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@#@@@@@'@@@'@@@@@@@@@@@@@@@@@@+@@@@@@@@+@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@+@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@'@@@@@+@@@;@@@@@@@@@#@@@@@@@@+@@@@@@@@#@@@@'#@@;@@@@@@@@@@@@@@@@@@@@#@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@;@@@@@'@@@;@@@@@@@@@+@@@@@@@@+@@@@@@@@@@@@@#'@@#@@@@@@@@@@@@@@@@@@@#@@@@@@@@#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@'#@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@'@@@+@@@@@@@@@#@@#@@@@@@@@@@@@@#@@@@@@@@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@#+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@+@@@@@@@@@@@'+@@@@@@@@@@@@@#@@#@##@@'@@@@@@@@@#@@@@@@@@@@@@@@@@#@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@'@@@@@@@@@@@@@@@@@#@@+@#+@#@@@@#':,,;:@@@@@@@@@@@@@@@@#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@;:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@#@@@@@@@@#@@@@@@@@@@@#@@@@+@@@@@@@@@@+@@@@@@@@@@@@@@@#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@#:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@#@+##@@@@@@@@@@@;@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@'+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+#@@@@@#@@@@@@@@@@@@@+@@@@@@@'@@'@@#@#@@@@@@@@@#@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@;#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:##@@@@@#@@@#@@@@@@@@@@@@@@@@@#@@#+@@@++@@@@@@@@'@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@@@@#@@@#@@@@@@@@@@#@@@@@@@@@@+#@@#@@@@@@@@+@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@+@@@@@@#@@@+@@@#@@@@##@@@@@@#@@@#@#@#+@@@@@@@@#@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@+@@@@@@#@@@'##@#@@@@#@#@@@@@@@@@:@@@,@#@@@@@@;@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@+@@@#@@#@@@###@#@@@@+@##@@@@@#@@##@'#@;@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#'@@@@@@@@@@@@#;:;#@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@#@@@#@@+@@@@+@@#@@@##@@+#@#@@@@'@#@+@@:@@@@@'@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@#;,@@@#:'@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@#@@@@@@##@+#:@@#@#@:++@@+#;#+@@:@+#',`;@##@#@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#@@@@@@#`+#@@@@@@:#@@@@@@@@@@+#@@@@@@@@@@@@@@@@@@#@@@@@##'@#@@#@#@:@@@@@#@@@@@@#+,#@+;@@+@#@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@;#:@@@@@@@@@++@@@@@@@@@';@@@@@@@@@@@@@@@@@##@@@@@;#::'@@@@@@+@@@@@#@#@@;@#:#@#@@@#@+@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@#@@+@@@@@@@@@@#'@@@@@@@@;@@@@@@#@@@@@@@@@@@##@@@@@;@'+'@@+@@@#@@@@##@#@@'@,###@@@@:@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@#@##,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@#@@@@@@@@@@@@;@@@@@@@@#+@@@@'@@@@@@@@@@@##@@+@@+';+'@@+#@@#@@@##@@@@@@:@+:@@@@@#+@@@'@@@@@@@#@@@@@@@@@@@@@@@@##'`  ,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@'@@@@@@@;+@@@@+@@@@@@@@@@@##@@+@@#+'@,@@@;@+#@@#@+@#@@;##@@#@@@@:@@@@#@@@@@@@#@@@@@@@@@@@@@@@@##``  `..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@#@@@+@@@@@@:@#@@@#@@@@@@@@@@@#@@@#@@#;;@@@@@:@'@@@+@#@#@@#;@#+@@@@@'+@@@#@@@@@@@#@@@@@@#@@@@@@@@#'` `.`.,`;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@##@@@@@#@;@@@@@@@@@@@@@@@#@@@#@@#+'@@:@@#@'@@@;##@@@#+#@#'@@@@#@@@@#@@@@@@@+@@@@@@#@@#@@@@@@'`  `..+;:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@+@'@@@@@@+'@+@@@@@@@@@@@@#@@@@@@@##:@@#@+@##@@#++@#@@:'@##@#`@@;#@@@@@@@@@@#@@@@@@@@@#@@@@@@'``````':;.:,#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@#@@:@@@@@:@@'@@#@@@@@@@@@#@@@@@@#+#:@@@+#@@#@@#+;+#@@'@@'+@@#@@#@@@@@@@@@@#@@@#@@@@@#@@@@@@+ ```,.,,``.;;,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@+@@'@@@@'@'+@##@@@@@@@@@#@##@@@@:#;#@;'+@@#@@'#:###''#@;#@@@@'#@@@@@@@@@@@@@#@@@@@@@@@@@@#`````:.``...;.;:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@#@##@@@@#+#@#@@@#@@@@@#+@##@@@@;#'#@:@##;###;+;#@@;#@@;@@+@@:@@@@@@@@@@#@@@#@@@@@@@@@@@@:.``.`:......,,,,#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@'@@@@'@@@@@@@+@@@@@#+@#@@@#@;#'#@:@+#'@@@+'+#+@;#@++@@+@;#@@@@@@@@@#@@@#@@@@@@@@@@@@@``:`.......,,:;+,:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@#@@;#@@;@@#@#@@@#@#@@@+@#@@@##;#+##;@##+@@@+:+#@:+#@'@@#'@#@#@@@@@@@#@@@@@@@@@@@@@@@@@@.`.....,..,,:;;':;#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@#@@##@@'@;@+@@@+@+@@@#@+@@@#@'++'@+@###@@'@:+#''#@@+@@;@:@@@@@@@@@@#@@@+@@@@@@@@@@@@@#,,.,..:.:,.;:;;+;:.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@+#@@+#:@;@@@@@;@@@#@#@@@#@'@+,@#@#@#@@+@'#++'#@+#@'+##@#@@@@@@@+@@@@@@@@@@@@@@@@@@+,,,:,,:,,,:;;;'':;:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@#@@'#@@#:@;@@@@@'@@@@@#@@@#@+:+'@@@@##@#++':@:#'@:@@@+'@@@@@@@@@##@@@@@+@@@@@@@@@@##`::,:,,::,,:';;'+;':'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@#@@@@@@@@@#@;+#+@@@@@@#'@@#@@@@@+@+;;'@@@@+@#'+:;'#'#'++@@@'##@#@@@@#@'@@@@@+@@@@@@@@@@#;``,:,::::::';;''+++:;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+;,:'#@+@@@@@@@@@'@:@+;#'@@@@@@;@'#@@@@#@';;#@@#@'@#;';;#';'#;#@@##@@@@@@@@@@#@@@@#@@@@@@@@@##.```.,;::::;;;''+'+++';;#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#,:+@@@#;:;+@@@+#@@@@+#@,#''#+@@@@'@'#@@@@#@+;+#+@##'#@;##;+''#'+@@@'##@@@@@@@#'@@@@##@@@@@@@##'`````,,:::;:''';;++++##;#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@::@@@@@@@#@+;;#@@'#@@@#@##@'+#'#@@@+'#@@#@@#@#;##'@##+@##++''+##+@##@#@@@@@@@@#+@@@+@+@@@@@###+. ```..`,,::;':;'';'+++###''@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;+@@@@@@@@@#@@;+;@@#+#@@'@@+@:'@+@@#@#@#@#@'#@#:+##@+;+###';;;'#+'+@@;##@@##@@@@#@@#@'@@@@@##:`````.``..,:;;;;'#'+''++####'+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#.'#@@@@@@@@@@@@@@#';@@@+@@@@@##'#@;@@#++@@@'++#@#,#+##+++#'#'#++#++######@@#@@@@#+@@@@+@@@@##,  ``.`.```.,,;:;;'++'''''+####@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;+##@@@@@@@@@@@@@@@@#:'#@@+@@;++:+'+#@@###@+@##++@#,#+##+##'+,++'+:;;#;@'+'#@##@##++@@#+@@@@#'``  ```````,,,:';';'''+'''+++####+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@';@@+@@@@@@@@@@@@@@@@@@@;##@#'@@#@###+#+@#@##+@@#++#',''##;+##+;'+''++#'+.;+@#@#@'#+@@@@##@@@#.```,.``,.``,,.::;';;;+'++'+++#####''@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#,#@@;@@@@@@@@@@@@@@@@@@@#@;###@#@+@#'#+#,@@@+'#@@@#'##,:++'':+##:''+##+#;'';+@###+@'##@##@@#@#` `.,` `.`.`..`::::;+'+#''++++#+#@@+#'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;+@@@:@@@@@@@@@@@@@@@@@@#@@#@;##@@+@###+#+;.+@@'#@@@+###,;'+#.''++'+'+##'+#;#'#+,....'@@###@@@+` :..``.,,.,.`..;;::;'+#'''+'+++#####+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@#@@@@@@@@@@@@@@@@@@@#''#@:#@@+;+#@'#.#;##@+#@#+####,;##`'+::;++';+:;+#,;,;'@+,+@#,;#+@@@#+`,` ```,`..:,..,:;::''';++''###+##@###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@''@@@@@:@@@@@@@@@@@@@@@@@@@@@@@#+';+@@#''@';@';+;+,###;####:'+#''+#:;+:'+;#'##,;@#'#;@##@+#.@@@@@',```..```.,,,,,;;';;''+++'++##'+#####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:#@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@;''@#';#''#:;;+'+###,##'+:''+'+++;;+;++':##,:+@@#:#'#@#@+@,#@@+#.`````.,...,'::;;;'''+'++'+++'##+####@@@@@@@@@@@@@@@@@@@@+#@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@'+;#@:,#+,,:;#'#+#;:##'#;';;++:'.;+,#;;#';++#@#:+'@@@#+#@#,@++'#`.``...,.,;::::;;+'++##++'+#+'+##+#@@@@@@@@@@@@@@@@@#''@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@#@@@##@+@#;:#,#:'+;#+#'++#'#:'':++'+,'''+''++':##@;'#@##+#@@@#@.;@##`....,,,::,::;:;''++++#+++++#+'+++#@@@@@@@@@@@@@@@#'#@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@;#@@##+##@''+'++'';@;':#++;::++:+;+;'+':#:'''':#@+#@+#@#'##@#@'#;###;`..,,:::::'':;'+++;+#+++'#+#+#++#@@@@@@@@@@@@@#+#@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@#,#@'@+'+@@':'+#';+#:+'#':';;++'':#+;';,:';+;:.+#'#+@@'@#@@#@;@@+;+@#..,,.:::;:';;;++;++##+##.;+#+++#@@@@@@@@@@@@++#@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,@@@@@@@@@@@@@@@@@@@@@@@@#@@#;#'@@'''@+;#,#:;+,'+##;';;;+,#':';;'',:'#;:;;;':#+##@:@+@@;###:,+@#...,::;:;;:+;#;#++###+#'..'+#+'@@@@@@@@@@+#@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;##+'###+#+#+;''.:':'+#+:+'::+'':':,';+'''+;,+'#+'+;#'+#+;@'#+#+@#+###`.::,'';;''+'''+##+###@@#,.,#@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@#;,'##+#+#+';#:#,',+,+::'':,';#;;;:;',;+',';':+:##;+';'+#+#++#@@#:;#'.::,,;;;'';+''++###+#@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@#;.;#'+';#'''';;'';+,::+::':+'+':;':;;'+''::;++'::#,#+###+#@#++#####:::;';';'++'#+'####@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#@##+;##++:#:;'#::;':,:::,;';+'+;;;,''.:+;+;#'#;''#+;#'+@'##:##@@'@#@.;;';;''+''+#++##'@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@#'+''##;+';+'':'+#:::':.;:+;;';:,'':';::';+,;;+::#''##+:+#+@@@+@@##';';:::,,,,:++#+@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#+;#;;,+:+;:++,:+#;;;';:;:;,::,'::','';''',':;++#;:##;#'##@@@@@@#@+`;'+''''++###,:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###'+#,',+++'+;;+;+::;';:;:;:.:,::;;';':':'','++''++#+:+#+'@@@@#+'#@+;#'''++'#+++##+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###,++;+:'+;:+:,.+,,'';;:;:;,,,:,:;;;;';''+,#++'++#+:#++'@@@#'#+@@@@.''''+'+''###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@###;++;+,;+,',,'+',;';:;;:'::::;:,:,';;,,''+':++#+:##+#@@'+@#@+@@@@:''+'''+'++#@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@#++#@@@@;@##:'#';':#;;;;;::;.:;,:::;:,:::';,:+;::,:+;::,;,:##++@#;@+@#@@@#;;#,'';'+'+#+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@@@@@@@@#,'#@@#+;;@@;##@++';:':':;;:,.;:,,:;::::,::::';;+';::+;.,;++'##+'##;@+@#@@#'###+''''''''+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@.#@@@@@@@#@#,#+'+@'++:;;+';,::'+'.,:;;.:,,:::;:,:;:;:+'.;.#'+##+;+@+#+++@#'@'#+@@#,'+;'+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@@@@@@'@@#;+#'#+,'+;,':.;,;';,.::;,..,::,;:'':,;::.;;#;++.+;'''@+@'@'@@@+#@@@;'''+'++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@'+@@@@@@@@@'':@@@++#;,;,;:;:':,,:::::,:.,.,.,:;;:,;::;+.,,,:#'+''#'#+#@:+@#@#@##'##+'.'+';#####'::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@'@@@@;#,+;'';;;;;;::.:,:::,.,.,,,:;;::;:,;::,',#:+:'#'##+#@###@###''#+@#;'#@@@@@@@@@+,#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@'#@@@@@@@@#::+##;:+@#:;:';';'::;:,;.,.,..:..`,:;:;::':,,,'.'+';++;''++#@##@@+'+###:.#@@#@+@@@@@@@@@@@@:#@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@,'@@@@@@@;+@@@@@@@+'+;+';:;;:;'::::.:.,..,..,,,:;,,:;::;'.:':;;+;;#';@@+##'+@#';+#@@@@@@@@'@@#@@@@@@@@@##@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@@@@@@@:@@@@@#.@@@@@@@@@#+#+#+':,;;,,:',:,,.,......,,::.::,,;,.;+';';+:+,+##+++#'+:+'#@@@@@@@@@@#@@@@@@@@@@@@@@#@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@#+';:'#@@@@@@@@@@@@@:@@@@@ @@@@@@@@+,++#+';#;;,.,::.,:,..`..`.....,,,.;;:;,;;;+#;+++''#+;'+++'##:@@@@@@@@@#@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@#+':'#@@@@@@##'#@@@@@@@@@+@@@@@`@@@@@@@;#@@@##+#'';:,.,,,,,,...``.....,,,:,,::,:';''',':#++'+;:;:+++#+@@#:;+@#@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@#;#@@@@@@@@@@@@@@#++@@@@@@@@@@@@.@@@@@@'#@@@@@#;'##:;:,...,,,....```...,,:.,,,,;';;:;;,,::;#:;:;#++@+:#@###+#+#@@@#@@;@#@@@@@@#########+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@##@@@@@@@@@:@@@@@@:@##@@@+;+##+,;...`....````````....,,..:;.:,;;;;;;;':::''##''#@'@#@@@#@@#+#;@#############@@@@##@###+''+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@##@@@@@@'@@@@@,@@@+'#@@@+#+:#:;,..``..````````......`:;:;::+:;;';;,,+#'::##';';;';'+##'+@@@+@@'#@@@@;#@@@@@@@@@@@@@@@@@@#+''#@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@+@@@@@+@@@@@@##@;,+''':..:``.``````````.,.`.:.:;;:,:;;:;:'+'+;;::+'###'+;###@#:;###@@@@+@+#@@@@@@@@@@@@@@@@@@@@@@@@@@#;'#@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@,@@@@@@@@@'##'.,,'.,.``````````````.`.,.;,,,...:;:;:;;:,;:#;;+''+:'##@@@@@@#,;+;;;,@@@@@@@@@@@@@@#'++++#######@@@@@#;;@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@'@@@@@@@@+#;#++;`;,,..``````  ```````,.,,,,::;.:.:;',:::'+';'#+########@@@@@@@+:@@@+@@@@###@@@@@@@@@@@@@@@@@@@@@@@@@@@#:+@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@+##'':,``:`..````    `````.....::..,,,.,';:..:;;,'';'++'++##';;#@@@#+#''#+#'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+;@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@,'#+#:;'+``:``.````    ````````...,,,:::::.:.,:;,,++''#@####+#####+;:#@@@@,@+@#'@#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#;@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@`.##..`,;.````..` `      ```.`...,,:,,,::.;,:,::,',+###':+###''+@@@@@#''@@#'+@@+:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+;@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#``;#````;,..:````        ````````..,,,:,,:;;'+';;';'''''#++;::''+###+'''++'#@+,+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@+.`.'````::,.;.````        ``````....,,,::;:,;.`,:;;'+';;';##@#+;##+';;+#@##';#####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#,@@@+,`.'.``.::',.,``.`          `````...,,:,,,:::::,:'++'+;##+'@@@@@#;+#####+,;+#;#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##.#@@#:..,:...:;::;:.```          `````..,,,::,::,:+'';+';,'+;######@@@@#:######+++##;#######++++#'@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###`.##'@;,.,+...,;:;;;.```          ```..`..,.,:,:.,+'+;#'#+#+;+';++#@@@@@@:@@#'#@##@@@+#@@@@@@@@@@@+:#@@@@@#@@@@@@@@@@@@@@@@@@@#@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##+.` '.:#'+,,;,:''+;',.,.``          ``````.,,,,:,:;;;,;''''#'##+;#####++#####:;#@@@#@##@@#:####+++###@@#;@@@:#@@@@@@@@@@@@@@@@@@@:@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##,` ``..,'#:+:;####+;,;;;```          ``````..::,,:,;;'';;:;'''###,+++##@@@@#+:++@@@########@+;@@@@@@@@@+;;++:@@@@@@@@@@@@@@@@@@@@@,@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@###:`` `.,.,;;###@####+','';``.``      `````.``.,,:;':,::,,+####+#####@'####'''#@@@#'###+#@@@@@@#;+''#@@@@@@@@#+@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@##;.:` ```.,;;'##@####+#+;.',:..``        ````..,:,::,::,::,;:'++;;;+'#+''#@@#########@@#++@@@@#+#@@:@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@##',` ```.: ;;###@@######+',;,;..```  ```````..`.::,,::;,,:''':'+######';'@@@########@@#####+#@@@#@##;#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@##':``    `::+,#+'#+######'++:.,::,````` ````````.,:,.,:,:,,:;::'#.++''+##+####@@@@@+#+#@@@@@@@@@+;#@@#@@'##+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@##;',      ```.,##+#@@@@@##'#::,`':,..`.``````..``.,.,:;,,,:;;:;+:;;:'++';'+##+##+#+'@@+@#++@@@@@@@@@'##+#@#'@@#++@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@##.`.`      ..`,+@@@@@@@@##''';;`';:.``.````````,.`..,::,:,.;::::;:;;;;'++#@+'++++'###+;##@@@+'#@@@#@@@'#@#++:#@@@@#'#@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@##.``        `` `:@#@@@@@@@#:+#+:.;;:,...```````....,,,;;':::,;,::;:,+:##,'++;@@#;++,+;'#@@@@@@@@'+@'@@@@@'#@@@;++#@@@@+'#@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##:+`    `` ```` `:;;@#@@@@@@#,'#;'+,;+';....``..``.`,.,:::.';+;,;;;;.;'::;'#+#'+#'#@@+@@@####@@@@@@@@#;@@@@@@@;@@@'+#+;#@@@@++@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##+``      ````.;'``''@@@@@@#:+#@##+:''';,....`..```..,,;:::.;';':;:';',;:',;,+##'#@#'@@@@@@@#+@@@@@@@#@@@@@@@@@++@@++@@#'+@@@@#;@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##;.,`    ```````.;;:';:@++#@@++###@###,;''';:,,.`.`.`..,,.,:,::;:;';';;:,:';::+,'++##'+@@;@@@@@@@@#+@@@#@@@@@@@@@@@@;#@++@@@@''@@@@@'#@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###,`.`    ```````,;..:;,:;@@#@@#++@@###+++'':::,,...:,``,.:.,,::;:;:+'+';++;+:+;+;;:'+++#;#@;#@@@@@@@@#+#@@@@@@@@@@@@@@#+@#+@@@@@'+@@@@@'+@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###;:``  ` `.``.`,:'';:.;+:;+#@##@,'#@###;',++;::,:,:`...,`.,;,;;,;'::':#+#+;;;+#;;:+#;.'+###:##'@@@@@@@@@@@'@@@@@@@@@@@@@@:@#+@@@@@@:#@@@@@++@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###.`.`    `.`.. ;`'.+:.:.+,':##'##;'#@+##+;'#+;;,.,.:..,``..,.:,;:,,+;.;;+'#++;#;#,#::#++''+;#+++;@@@@@@@@@@@@'@@@@@@@@@@@@@;@'@@@@@@@#;@@@@@@.@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@###':;``  `` `.`.``..':'':';;;:';;++#'@++@++;';##'':;..:,,.,.;,,;..::,::'',::':;;#'';;##:#.#@#+'+++#,#+#@@@@@@@@@@@@++@@@@@@@@@@@+#:@@@@@@@@#@@@@@@++,#@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@###+,````  ` `,`.`.,:;':+++':;:'.`,;+:+@###'#++#@#+;,:.,:...,,`.,:,,:,:::;'+,':';+#'''#+,#'+;+#@@#'':#++'###@@@@@@@@@@@++@@@@@@@@@@#+:@@@@@@@@@@@@@@@@@,###@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@####,.``` ` `.``,``..,,;':#+'+,'.+:...,+@@@@+##:+#@#''::;::,:.,.:,,:.::,::;.,''';':#:+#;##:+:##,;+##@@'##@#;##@##@@@@@@@@@@@#+@@@@@@@@@#'#@@@@@@@@@@@@@@@@@:@@@##+#@@#
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@###;,```    .``:``:..,;:'##;','`'`,,,.:.#@@@:#@#''@###;:;:;;:,,:;,.,,':;,;;:;''':+;,':+#+##:+###;:#+##@#'#@@'+#@@#+@@@@@@@@@@@++@@@@@@@@@:@@@@@@@@@@@@@@@@@@:@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@###'.`.,    ``.``,``'.,::'++';',',;.`..,:::;@@@'#;##@###'';:;:';.,.,,,::.;,::;+;:;+;;+';';':+@##'++#'#@+###@'##@#++@@@#+@@@@@@@@@@@'#@@@@@@@@:@@@@@@@@@@@@@@@@@@;@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+###,,``      .``:``+.,':;++;;;,;,,``.,....+'@@#@#++@#@++++;,;:':..::;,:,,,.;,,:;,#:#:+'++';'##@:####'##@#+@+#++@##'#+@@@#+@@@@@@@@@@@;@@@@@@@###@@@@@@@@@@@@@@@@@;@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+#,````    ` `.`:`.'.;+;;++,';;':..``..:;:+::.@++;+@@@@++'+;:'''::,;,,;.;::;,'::+;;#;#,::'''',##+###@:##+@@'@@;#;@@@:@#+@@@@'@@@@#@#@@@#+@@@@@@'@@#@@@@@@@@@@@@@@@@+@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@@#####,.,,`    `. `,`,..'.'+'+'+,+'':,.,`.,.,':..,;+####'@@#@##'+'+++;',;,,:',,;,:'';;:+,+#;++++#+;+';`+@@##@@'+@@+@@#+,@@@:#@##@@@#'@@@@@@@#@@;@@@@@#@@@##@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@@@####.+```      .````.:`+.;+'';#'+,:.,```..`.;''':;'+'+'+@:##++;'+;'+#'';';:,:::;.:';',:++;'#;;'+;#+;';'#####+#@#'@@##@@+,##@;@#@+@@@@+#@@@@@#@#;#+@@@@+@@@@+@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@@@###+..`;`        ```,``'`+.'':;;#'+:,.,..`.,;,::,::;':+#+#'@@@#'+#+':+'';+':;;;'':':,;;';:;+,++#,+'#:++,+,;@@;@###@@;#@@'@@@,@@@;@@##'@@@@'#@@@@@@#++;@@@@@@@@@@+@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@####'.``.``        `.`.` ;.;:;+,,.+:',..:....`..:;;;#'+#'##++@@@@#@+'##'::+:+'',:::;:,::,;;;,;;+;#'+;+''+'':#;;#@####+@@##@@:@@@'#@#'@@@##+@@@@;@@@@@@@#'+#@@#@@@@@@@#@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@###'.'`` `      ` `.``` ;`';,',:.+::,.,````..::;'';'#+#+@@#+:@@@@#@++++;++;+'+':;.,:':'.,';.;;+;,+@',++#+;#::@';+@@+##@@@#+#@,@@@#;@@;@@@@#'##@@'+#@@@@@@#'+@#@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@###'```:.        ```````.;`'+::,;.':,:.:.,`.,.,:.,++;@+##@@@#@#@#@@@@#+'+'+';+';;'+::'',:`;;+;;';+'+'#+#',;+#:#;@';,+@#+@@@@@'##@+@@@;@@;@#@@@++@#@''@@@@@@@@#:@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@#::.````          .``````.,,:+;;,;';;.;.:..```.;+';++'##@#@@@+;#@@@######++;+;;;;;:';;;;::::';#;#;''',''#:#;:###+';#+#+'###@@@@@+####+@@+:,;@@@@@@;#@##:@@@@@@@@@:+@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@#+'#,,```          ```.``...;:+;;:;;:'.'...``.,,,;::;++##@@@@@@@@+@@@@@#'##++:#;;,:+:;:;;#'';';#':'#::+;#+;##+''@#'#+'##'#+@@;@@@@@#+#;@@@@@@#:@@@@@@#'@@#'@@@@@@@@@;@##@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@##+,'+..`            `.`,`..,:';+;;;;;:'`'.:.`....,;;++'##@@@@@@@+;@#@@@@@#,##++:#;,::+::::;;;',:;+:#;+;+'#:+#;::+:+@:@##;+#:##@#,#@@@@@'@+#@@@@@@;#@@@@@@'#@@##@@@@@@@@;@@+@@@@@@@@@@@@@@@@@@@
 
@@@#+#++;;:;.;:``          `` ,`,`.:,:';';;;;',+`',,,``.,;;;;,''##@@@@@@@@@+@@@@@#@+@'@#;'+':::#:+;+#';;::::#';'#:#:,;'#'#'+###@@;#;'@'##@@##@@@@@'@#'@@@@@#+;@@@#@#+#+@@##@@@@@@@'#@@+#@@@@@@@@@@@@@@@@
 
#:#,'+##';';.`. `    `    ``.`. `'.'':;';';',+`;:..`.,...:++++#@+@@@@@@@+#@@@#@@+##@'@#''#+:':#:'''';#',+::+,#'#'++';:'@,######@@,+'+@@@#@@@+@@@@@;@@'@@@@@##+#@@@##@'#+@@@+@@@@@@.@@@@+#@@@@@@@@@@@@@@
 
,.##+#';';...`. `    ```` ```,`..#`+:.+++#;'`+`,:`.``,,;::#+##@@@+@@@@@@@+:@@@@@@@+@+#@#';#+;+'#:''#',#';';:'#';##:+.'#++++#;@+:@@##+'+@#@:@@@;@@@@@'@@@@@@@@'@@@@@@@+@'@##@@@+@@@@@#@@@@@'#@@@@@@@@@@@@
 
.:.:#';:...`.`` ` ` `````..`,`'`'.'':####+'.#`,;....,.;;.,++#@@@@#@@@@@@#@#@@@@+@@:@+@#+':#+;+++;#;'':,,,::.;#;#'#+@#:'#'#;+:@#+#@@:@+++@@@+#@@'@@#+@'@@@@@@@@,@@@@@@@@#+@@+@@@#+@@@.@@@@@@@'@@@@@@@@@@@
 
`.#;:,..... `.  `  . . `````:`;:.;+####++:+.::``.`..:''+#+@@@@@@#@@@@@@++@@@@@@@@'@+@#;';'';##;'#':++++#;':+;'#;##;#:;+#';#'#@@##@@'@'+@@@@@#@@+@@@+@'@@@@@@@@+@@@@@@@@@#+@@+@@@#+@##@@@@@@@#+@@@@@@@@@
 
..'` ...`.`. .    `````````.:,:,;#++++;',+,.....,:::::'+'@@@@@@@#@@@@@@@'@@@@@@@@#@'+'+;'#+;+':'#+:+#:#''';:.#';+#:.#;#+###+##@'@#@#@@'+@@@@@#@@##@;@@+#@@@@@@#@@@@@@@@@@@;@@##@@@##,@@@@@@@@@+#@@@@@@@
 
.`.``.....```` `  ` ,`:```,.`.:+:'++':;,;:.,....`.;:;+#+#@@@@@@@@@@@@@'@+@@@@@@@@+@;@'#';##';++###;'#'#++;:;:#;+;++'#'+#+'#####:@@#@@@@++@@@@@#@@@+@#@@+@@@@@@@;@@@@@@@@@@@;#@@##@@@##@@@@@@@@@@'#@@@@@
 
.::``....`. .  ``  `. ,``.'```'':;#+;:;,',..`...:;;'''+'##@@@@@@@@@@@@@#@#@@@@@@@@+#+#;#:'+',:+######,##@#'':++@#'####:;######'#+@#@#@@@#';@@@@@#@@@+,@@@@@@@@@@@;@@@@@@@@@@@'#@@@+@@@,+@@@@@@@@@@',#@@@
 
.,``....`.`. `.  ``.`.:;,..;+;:''';::,;:.,...,,,..'#+#@@@@@@@@@@@@@@@+@@@@@@@@@@@+'@@;@';+;+'#@####'#''#'';,:'#;;'@:,';;++'#++;'#@#@#@@@'';@@@@@#@@@;@#@@@@@@@@@##@@@@@@@@@@@+#+@@##@#@#+@@@@@@@@@@+,+@
 
.`,``......`,`  ```.```,`,,:+;++;';;:,;:.,,..,:'+:+'+#@@@@@@@@@@@@@@@@:@@@@@@@@@##+#'@+@+';##+#@##+;;#;;#'+';+:##++###++;@#;'#+#;;@@+@#@@@';;@@@@@#@@@@#@@@@@@@@@@:@@@@@@@@@@@@+###@@+@;@@#+@@@@@@@@@@#;
 
...`...`,,,,,.```````..`:':+'';;;:;::::`:..,:..:;''+##@@@@@@@@@@@@@@@@@@@@@@@@@##@#+###@':;#+++###+;,#;+++#;,.:+#;;#@@'';#@@+'+++:@@@'@#@@@++.@@@@@+@@@'@@@@@@@@@@@:@@@@@@@@@@@@##@##@##@@@@+#@@@@@@@@@@
 
..`...`.,,,,.,`.`.`,,,.'+:+';::;:;::;:.;,..::;;'##+#@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@#'@;##+;:#'''#+##';@+###;',;:+#+';@@@,:+@#@;@'';@@@@+@+@@####@@@@@+@@+@@@@@@@@@@@##@@@@@@@@@@@@##@@+@@'@@@@@'@@@@@@@@@
 
...``.,,:,,:.;...`+;;';':+;'';;;'::::.,.,:,,:;;'''@@#@@@@@@@@@@@@@@@@@@@#@@@@@@#@@@;:;+#+':#+';@'+##+@++##''.+:'+++#@@@+++#@##@@@':@@@@+#++@'';#@@@@@'@@@@@@@@@@@@@@,@@@@@@@@@@@@@#+@@#+###@@@@#+@@@@@@@
 
..`.,:;:::;;:;:.:;;'#,;;+:'+#;:',:;:.,`.,,,'+#+++@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@'@#@##';##;:@+'@#@##;;'+#::,;'+;'#@@#:;@###,@@++'@@@@+#'@@;'@@#@@@@#+@@@@@@@@@@@@@;@@@@@@@@@@@@@#+@@@##@'@@@@++:;#@@#
 
`,,;+'';:;;;+.'';.++;';''++'+;',;;;,,.,::;,,;'++@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@#@@@+###@@#';##'#@#'@+';#+;#+++;#++#+':#@#';;@@#@'##:`#@@@#'#'@@#;@@@@@@+@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@+@@@#'@##@;@@@@@+;@
 
,;''#;;';;'+###+'''+#+'+'##;:',';;...:..,++++#:@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@+@@+@@#',+#+#+;;'+':@#'##;;:+.,+,...'#:;'##@:@#';###@@@@##'@##@@@#@@:@@@@@@@@@@@@@@@:@@@@@@@@@@@@@@##@@@@##@:@@@@@@#@@
 
:''#'+'+;:'@@@@@++`;##'###';',;;;::,,;;;,,;''+@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@##@@'@@#'#+###'';@#;,@++@@'+'',.'#+#+@@'##'#;##@++##@@@@@@@@'@;'@@@#@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@;@+@@@@@@@@
 
+++###'#+@@@@@#@+++;######;',;;:.,,..,';;'##+##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@;@##'#++#@@+;@;+'@;+####+''';#@:;@@@#;+;##+#@+#;@@@@@@@@@'@#'@@@#@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@##@@@@@#+##@@@@@@
 
+@#####@@@@@@@@@#++';###++;.:;;,,,;;;::';:'+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@#@@@@;@##'++##@@#:@#++#;#'+@,:::;:'+;#@@@+:@#@+@+@@'@'+@@@@@@@@'+##@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@'#;#@@@@
 
+##@#@@@@@@@@@@+@+++###++;.:;,:,.`,;;:;#++'@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'#@@@;@##'####@@@:@@'+';@;#@++;,'#;'@##@@:#@@;###+@:#@@#@@@@@@@@#'+##+@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@'@@@@@@@#@+@@@@
 
+@@@@@@@@@@@@@@#@#####++'.:':,..;;:;::;'##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@+@@@:@@+'#+++@@@;@@'#:;#;@@##+:##:;@:;+@'@+@#+@@'#:#@+@@@@@@@@@@##;@'###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@#@+#@@
 
@@@@@@++@@@@@@@@@@#+#++',:;;,,.:,,:;'++###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@#@#@+@##'#+@+@@@'@@+#,'@+@'@:';##+;#;+@@+#:#@'@##+'@#@+@@@@@@@@@#'@#+@@##@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@;@@@@@@@@@#'@
 
@@@@#`'@#@@@@@@@#@###+',;',,,,:,:':,'+###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@##+#@@#@@@+@@##:+@##+'':,'@@+#@##@@#+@@#'++#@@@+#@@@@@@@@@@#++@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@'
 
@@@:#@@@@@@@@@@@@@@##',:;;;,.;,:;+';+#++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#++@@#@@@+@@#''#@@;#+##''##;+@';@@#@@#@'@#@+@@@''@@@@@@@@@@'@;@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@
 
'';#@@@@#@@@@@@@@#@##+':,,,::,;;,.'''#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@+#'+@@+@@@+@@#:+#@@'#'#;'+#+';#;'#@#@;@#+;##@+@@@+#@@@@@@@@@@:@#@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@
 
++@@@@@@@+@@@@@@@@@@++;;,,,,,;+''+##+'@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@+#+###+@@+#@@@;#;@@+#+@;::'@#;#'#'@@@;@#@+#++:@@@@+@@@@@@@@@@##'@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@#@@@@@@@
 
#@@@@+#@.+@@@@@@@@#@+'+::,:;;,.,;,'##@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@'#+#@#;@@'@@@@'#,#@@@@@'+'+#''+#':@@@@@@#@;##++@@@#'@@@@@@@@@@;#;@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:#@@@@@@@
 
@#@@@@@;@@@@@@@@@@@@#;'',:;+';'##+##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:#+##'++@#@@@@#@;#@@#@@###+##+#+#:@@@@#@@@@'@+#@@@@@#@@@@@@@@@@##@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@
 
@@@@@@;@@@@@@@@@@@@+@''';;..,;,:'@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@'#+##@#@@@@#@@#@++@@'@#@:;++##'#':@@@@:@@+@#+:#'@#@@+@@@@@@@@@@;+;@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@
 
@@@@@@@@@@+@@@@@@@@@@@''+'+''++##+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@#@@+#++#@#@@@@#@@###;@@+@'@:',;##++;:#@@@'@@@@@#++#@@@@#+@@@@@@@@@@#+#@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@
 
@@@@@@@@@##+@@#@@@@@'@+'+::,.####+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@#@@+#+#@@##@@@#@@#+@:@@@@@@'#+:@@:##+'@@@@@@@+@@@##;@@@##@@@@@@@@@@;#;@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@
 
@@@@@@@@#@@@@@@@@@@@#@@+++;++###+@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@+@@+#'#@@##@@@#@@#:@,@@@+@@#@#;;#,++;:@@@@+@@@#@@@'##@@#@'@@@@@@@@@@#@'##@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@
 
@@@@@@@@@@@@+@@@@@@@@'@+++'+++@#@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@+++#@@##@@@#@@#,@:@@@;@#@#':++''+''@@@@:@@@+@@@@'+@@#@@@@@@@@@@@@'@+@@+'#@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@
 
@@@@@@@@@@@#@@@@@@@@@@@@++#'#@##@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@+#++##@#@@@#@@@:';#@@+@+@#'#'++'@'@#@@@+@'@@#@@@@++@#@@;@@@@@@@@@@#@:@@@@#@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@
 
@@@@@@@@@@@+@@@#@@@@@@#@###@##;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@+###@#@#@@@+@@@'+''@@@@#@@+@+##,@'#:@@@@@@@@+@@@@#+@#@@@@@@@#@@@@@;@@+@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@
 
@@@@@@@@@@@#@@@@@@@@@@@#@#@@@+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@####@#@#@@@'#@@#'+:@@@##@##@#@#''#;;@@@@#@+@@+@@@@#+#@@@'@@@@@@@@@@#@;+@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@
 
@@@@@@@#@@+@@;#@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@#@@@@@@@@+###@'@@@@@'#@@###:@@@;@@###@+@;'@;#@@@@;@@@@#@@@@#+#@@@@#@@@@@@@@@;@@#@@#@@@@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@
 
@#@@@@@@@@#@#:@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###+@@@@@@@;#@@###'#@@'@@#@'@'@''@,@'@@@'@@@@@'@@@@+'@@@@+@@@@@@@@@#@@:'@@#@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@
 
  
 
== Prerequisites ==
 
== Prerequisites ==

Versiunea de la data 28 decembrie 2016 22:43

ANUNTURI

4c 61 20 6d 75 6c 74 69 20 61 6e 69 20 21

Prerequisites

Cunoasterea unui limbaj de programare (cu citire/scriere la consola) si a unor algoritmi de baza.

Concepte: tip de date, variabile, asignare, operatii aritmetice, operatii logice, structuri repetitive, consola, biblioteci

Materii care asigura aceste cunostinte: PC - Programarea Calculatoarelor SDA - Structuri de Date si Algoritmi


Rezultate test incipient, din total studenti prezenti (~ 70% din cei inscrisi in seria C):

3% ar fi luat nota 10: si-au organizat codul, datele, stiu sa citeasca dintr-un fisier si au scris un algoritm care ar merge

15% au propus un algoritm care ar merge

15% stiu sa citeasca din fisiere

35% stiu: ori sa citeasca din fisiere, ori sa isi organizeze datele ori sa scrie algoritmul corect. Daca se tin de treaba, acesti studenti pot trece un examen de programare fara eforturi intense, doar cu seriozitatea de care ar trebui sa se bucure orice materie din facultate

25% au fost foarte slabi: nu pot scrie nici macar 2 linii de cod. Acesti studenti nu vor trece un exemen de programare, fara a lua masuri radicale

65% nu au facut niciuna din cele 3: nici organizare de date, nici algoritm corect, nici nu stiu sa citeasca din fisiere. Acesti studenti nu au sanse reale sa treaca un examen de programare, fara a se stradui intens.

Repartizarea punctelor

Punctajul maxim este de 100 de puncte, corespunzător notei 10. Acest punctaj este repartizat în felul următor:

Laborator 50p: 25p colocviu + 5 x 5p lucrari de laborator

Curs 50p: 30p grila finala (saptamana 14, vineri orele 17-21, A414) si 20p (lucrari sau teme de casa 10 x 2p sau 5 x 4p)

BONUS maxim 10 puncte pentru activitate excepțională în timpul semestrului. Punctajul bonus este exclusiv la latitudinea titularului de curs.

Frauda la teme / laborator / punctaj pe parcurs => se aduna opusul notei. Frauda la coloviu / test final curs => raport la decan cu recomandarea de exmatriculare.

Note: https://drive.google.com/open?id=1F_h8d1gADG79twoNwWs5iaCwNkG43JcEvtcD8sHw5jc

Studentii: Mitrana Gabriela, Toader Andrei-Calin, Totu Tiberiu, Buga Roxana, Tabac Adreina, Ristea Nicolae-Catalin s-au voluntarizat pentru corectarea lucrarilor de curs si/sau consiliere pentru ceilalti colegi.

Li se acorda: 1 punct bonus per sarbatoare de curs (a seriei), si 0.5 puncte bonus pentru 1 saptamana de consiliere (daca rezultatul se vede in notele studentului/studentilor consiliati)

Condiții de promovare

Condițiile minime de promovare sunt:

  • cel mult o absență în laborator;
  • minim 25 de puncte din punctajul de laborator;
  • minim 50 puncte în total.

Programa cursului

Curs1. Introducere: computer, CPU, I/O, limbaje de programare, Java, JVM, compilare Java, HelloWorld, output, tipuri de date (boolean, int, double, String), variabile, atribuire, operatori =, +, - , * , /, ordinea operatiilor, concatenare de String, bucle, if, while, for, initializare array, String array, clase, obiecte, campuri, metode

Curs2. Clase, obiecte, campuri, metode, constructor, constructor implicit, instante, access la campuri, acces la metode, referinta vs valoare, primitive, obiecte, == , equals, metoda statica, camp static, control acces: public, private, domeniu de definitie, this, pachete, package, import, java.lang.String, java.lang.System, exceptii, throw, throws, mostenire

Curs3. Recapitulare: mostenire / derivare, extends, @Override, javadoc, static, final, exceptii, throw, throws, try, catch, finally

Curs4. Java I/O, flux de date, clasa abstracta, interfata, property file, equals

Curs5. Recapitulare: citire din fisiere. Exemplu: afisati cele mai mari 3 medii (si studentii carora le apartin) din fisierul cu formatul de linie: Nume Prenume Nota1 Nota2.

https://drive.google.com/open?id=0B5TtS-S1KZFGTEZHMjRQUTJHOGs

Curs6. Socket, System.in, serializare: serialVersionUID, ObjectOutputStream, ObjectInputStream, readObject, writeObject, java.lang.ClassNotFoundException

Cod demo: https://drive.google.com/open?id=0B5TtS-S1KZFGQ2dNUWs3dE95VWc

https://en.wikipedia.org/wiki/OSI_model, https://docs.oracle.com/javase/tutorial/networking/sockets/ , https://docs.oracle.com/javase/tutorial/networking/urls/index.html, http://wiki.dcae.pub.ro/index.php/Serializarea_obiectelor

Curs7. Procese si Thread-uri; start, run, join, interrupt, synchronized, mutex, barrier, semaphore, thread pool, starvation, deadlock

http://docs.oracle.com/javase/tutorial/essential/concurrency/

Cod: https://drive.google.com/open?id=0B5TtS-S1KZFGTjFJQ1RTZ010czA


Curs8 ArrayList.... https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

Curs9 -

Curs1O. GUI: Java AWT, Java Swing, Layout, Component, Container, Frame/JFrame, Button/JButton, Label, LookAndFeelInfo, ActionListener

request-by-student: redir System.out to JTextArea, inner class

Cod: https://drive.google.com/open?id=0B5TtS-S1KZFGbmxuVkNZUU9LUVU

Curs11. Aplicatii. java.awt.Graphics -setColor, drawLine, drawRect, drawChars, drawArc. Generics, java.util.HashMap, java.util.ArrayList, Properties, property files, Comparable interface.

https://drive.google.com/open?id=0B5TtS-S1KZFGd1pDZW5hVVVURGc

Curs12. Aplicatii.

Pentru primele cursuri, suportul de curs a fost MIT 6.092 (https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/lecture-notes/)

Suplimentar vedeti specificatia de limbaj java de la Oracle:

https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html

http://docs.oracle.com/javase/tutorial/essential/io/index.html

 Limbajul Java este unul singur, pe orice OS, orice arhitectura, si in orice curs. 
Important este sa stiti ce inseamna si cum sa folositi conceptele enumerate mai sus

Resurse Externe

Pentru incepatorii care nu stiu programare DELOC: puteti incepe cu: https://www.udemy.com/java-tutorial/

Pentru cursuri interactive vedeti site-urile dedicate (eg. Edx, Coursera, Udacity)

Altele

https://www.ericsson.com/res/docs/2015/consumerlab/ericsson-consumerlab-communication-in-the-world-of-apps.pdf

http://www.tiobe.com/tiobe-index/

https://docs.nvidia.com/cuda/cuda-c-programming-guide/

http://www.nvidia.com/object/gpu-applications-domain.html