-module(tested).
-export([main/0]).
main() ->
{ok
, [N]} = io:
fread("", "~d"), init(N).
init(0) ->
initdone;
init(N) ->
{ok
, [S]} = io:
fread("", "~s"), R = doit(S),
init(N-1).
doit(SS) ->
S = incl(SS),
D = L div 2,
case L rem 2 of
0 ->
doit(RSL, SR, SL);
1 ->
doit(RSL, SR, SL, string:
centre(S, 1)) end.
doit([], [], SL, SC) ->
SL ++ [SC] ++ lists:
reverse(SL); doit([HL|TL], [HR|TR], SL, SC) when HL == HR ->
doit(TL, TR, SL, SC);
doit([HL|_TL], [HR|_TR], SL, SC) when HL > HR ->
SL ++ [SC] ++ lists:
reverse(SL); doit([_HL|_TL], [_HR|_TR], SL, "9") ->
INCSL = incl(SL),
INCSL ++ [$0] ++ lists:
reverse(INCSL); doit([_HL|_TL], [_HR|_TR], SL, SC) ->
INCSC = incl(SC),
SL ++ [INCSC] ++ lists:
reverse(SL).
doit([], [], SL) ->
doit([HL|_TL], [HR|_TR], SL) when HL > HR ->
doit([HL|TL], [HR|TR], SL) when HL == HR ->
doit(TL, TR, SL);
doit([_HL|_TL], [_HR|_TR], SL) ->
INCSL = incl(SL),
INCSL ++ lists:
reverse(INCSL).
incl(S) ->
{H, T} = incl(lists:
reverse(S), []), incl([$9|T], SS) ->
incl(T, [$0|SS]);
incl([T|H], SS) ->
{[T+1|H], SS};
incl([], SS) ->
{"1", SS}.
LW1vZHVsZSh0ZXN0ZWQpLgotZXhwb3J0KFttYWluLzBdKS4KCm1haW4oKSAtPgogICAge29rLCBbTl19ID0gaW86ZnJlYWQoIiIsICJ+ZCIpLAogICAgaW5pdChOKS4KCmluaXQoMCkgLT4KICAgIGluaXRkb25lOwppbml0KE4pIC0+CiAgICB7b2ssIFtTXX0gPSBpbzpmcmVhZCgiIiwgIn5zIiksCiAgICBSID0gZG9pdChTKSwKICAgIGlvOmZvcm1hdCgifnN+biIsIFtSXSksCiAgICBpbml0KE4tMSkuCgpkb2l0KFNTKSAtPgogICAgUyA9IGluY2woU1MpLAogICAgTCA9IHN0cmluZzpsZW4oUyksCiAgICBEID0gTCBkaXYgMiwKICAgIFNMID0gc3RyaW5nOmxlZnQoUywgRCksCiAgICBSU0wgPSBsaXN0czpyZXZlcnNlKFNMKSwKICAgIFNSID0gc3RyaW5nOnJpZ2h0KFMsIEQpLAogICAgY2FzZSBMIHJlbSAyIG9mCiAgICAgICAgMCAtPgogICAgICAgICAgICBkb2l0KFJTTCwgU1IsIFNMKTsKICAgICAgICAxIC0+CiAgICAgICAgICAgIGRvaXQoUlNMLCBTUiwgU0wsIHN0cmluZzpjZW50cmUoUywgMSkpCiAgICBlbmQuCgpkb2l0KFtdLCBbXSwgU0wsIFNDKSAtPgogICAgU0wgKysgW1NDXSArKyBsaXN0czpyZXZlcnNlKFNMKTsKZG9pdChbSEx8VExdLCBbSFJ8VFJdLCBTTCwgU0MpIHdoZW4gSEwgPT0gSFIgLT4KICAgIGRvaXQoVEwsIFRSLCBTTCwgU0MpOwpkb2l0KFtITHxfVExdLCBbSFJ8X1RSXSwgU0wsIFNDKSB3aGVuIEhMID4gSFIgLT4KICAgIFNMICsrIFtTQ10gKysgbGlzdHM6cmV2ZXJzZShTTCk7CmRvaXQoW19ITHxfVExdLCBbX0hSfF9UUl0sIFNMLCAiOSIpIC0+CiAgICBJTkNTTCA9IGluY2woU0wpLAogICAgSU5DU0wgKysgWyQwXSArKyBsaXN0czpyZXZlcnNlKElOQ1NMKTsKZG9pdChbX0hMfF9UTF0sIFtfSFJ8X1RSXSwgU0wsIFNDKSAtPgogICAgSU5DU0MgPSBpbmNsKFNDKSwKICAgIFNMICsrIFtJTkNTQ10gKysgbGlzdHM6cmV2ZXJzZShTTCkuCgpkb2l0KFtdLCBbXSwgU0wpIC0+CiAgICBTTCArKyBsaXN0czpyZXZlcnNlKFNMKTsKZG9pdChbSEx8X1RMXSwgW0hSfF9UUl0sIFNMKSB3aGVuIEhMID4gSFIgLT4KICAgIFNMICsrIGxpc3RzOnJldmVyc2UoU0wpOwpkb2l0KFtITHxUTF0sIFtIUnxUUl0sIFNMKSB3aGVuIEhMID09IEhSIC0+CiAgICBkb2l0KFRMLCBUUiwgU0wpOwpkb2l0KFtfSEx8X1RMXSwgW19IUnxfVFJdLCBTTCkgLT4KICAgIElOQ1NMID0gaW5jbChTTCksCiAgICBJTkNTTCArKyBsaXN0czpyZXZlcnNlKElOQ1NMKS4KCmluY2woUykgLT4KICAgIHtILCBUfSA9IGluY2wobGlzdHM6cmV2ZXJzZShTKSwgW10pLAogICAgbGlzdHM6cmV2ZXJzZShIKSArKyBULgppbmNsKFskOXxUXSwgU1MpIC0+CiAgICBpbmNsKFQsIFskMHxTU10pOwppbmNsKFtUfEhdLCBTUykgLT4KICAgIHtbVCsxfEhdLCBTU307CmluY2woW10sIFNTKSAtPgogICAgeyIxIiwgU1N9Lg==