; }
Decompose the semi-perm to two semi-permutations for the upper and the lower
k
2 ×k2 Benes subnetworks by using the algorithm in [18]; Let them be up-semi-perm = call FindBenesMiddleDestination(N, k2, up-semi-perm);
call FindBenesMiddleDestination(N, k2, low-semi-perm);
Suppose the returned values are
, respectively;
for (j = 0; j < k2; j + +)
We have implemented Yang and Wang’s algorithm in C++ programming language; see the appendix. The following are our computer outputs.
6 Concluding remarks
It is known that an MIN may not be able to realize all the N! possible permutations. In [11], Shen et al. proposed an O(N log N) algorithm to determine whether a permutation is admis-sible in the Omega network. Although they claimed that their results are applicable to the Baseline network, an admissible permutation of the Omega network may not be an admissible permutation of the Baseline network. Therefore, in this thesis, we propose an algorithm to determine whether a permutation is admissible to the Baseline network. We have also
pro-posed an algorithm to determine whether a permutation is admissible to the Omega network.
Note that our algorithm for the Omega network is different from that in [11]. In this thesis, we have also implemented the decomposition algorithm in [18] and the algorithm in [17] into a C++ computer program.
References
[1] V. E. Benes, “Optimal rearrangeable multistage connecting networks,” Bell System Tech.
J., vol. 43, pp. 1641-1656, 1964.
[2] H. Cam, “Rearrangeability of (2n − 1)-stage shuffle-exchange networks,” SIAM J. Com-put., vol. 32, no. 3, pp. 557-585, 2003.
[3] Z. Chen, Z. Liu, and Z. Qiu, “Bidirectional shuffle-exchange network and tag-based rout-ing algorithm,” IEEE Commun. Lett., vol. 7, no. 3, pp. 121-123, 2003.
[4] S. J. Gu, “Nonblocking conditions for self-routing Benes network,” in Proc. of IEEE TENCON’93, vol. 3, pp. 203-206, 1993.
[5] S.-T. Huang and S. K. Tripathi, “Finite state model and compatibility theory: new analysis tools for permutation networks,” IEEE Trans. Comput., vol. 35, no. 7, pp. 591-601, 1986.
[6] C. P. Kruskal and M. Snir, “A unified theory of interconnection network structure,”
Theor. Comput. Sci., vol. 48, no. 1, pp. 75-94, 1986.
[7] W. K. Lai, “Performing permutations on interconnection networks by regularly changing switching element states,” IEEE Trans. Parallel Distrib. Syst., vol. 11, no. 8, pp. 829-837, 2000.
[8] C.-T. Lea and D.-J. Shyy, “Tradeoff of horizontal decomposition versus vertical stacking in rearrangeable nonblocking networks,” IEEE Trans. Commun., vol. 39, no. 6, pp. 899-904, 1991.
[9] G. Maier and A. Pattavina, “Design of photonic rearrangeable networks with zero first-order switching-element-crosstalk,” IEEE Trans. Commun., vol. 49, no. 7, pp. 1268-1279, 2001.
[10] K. Padmanabham, “Design and analysis of even-sized binary shuffle-exchange networks for multiprocessors,” IEEE Trans. Parallel Distrib. Syst., vol. 2, no. 4, pp. 385-397, 1991.
[11] X. Shen, M. Xu, and X. Wang, “An Optimal algorithm for permutation admissibility to multistage interconnection networks,” IEEE Trans. Comput., vol. 44, no. 4, pp. 604-608, 1995.
[12] M. Vaez and C.-T. Lea, “Strictly nonblocking directional-coupler-based switching net-works under crosstalk constraint,” IEEE Trans. Commun., vol. 48, no. 2, pp. 316-323, 2000.
[13] A. Verma and C. S. Raghavendra, “Rearrangeability of multistage shuffle-exchange net-works,” IEEE Trans. Commun., vol. 36, no. 10, pp. 1138-1147, 1988.
[14] C.-L. Wu and T.-Y. Feng, “On a class of multistage interconnection networks,” IEEE Trans. Comput., vol. 29, no. 8, pp. 694-702, 1980.
[15] Y. Yang and J. Wang, “Optimal all-to-all personalized exchange in a class of optical multistage networks,” IEEE Trans. Parallel Distrib. Syst., vol. 12, no. 6, pp. 567-582, 2001.
[16] Y. Yang and J. Wang, “Routing permutations with link-disjoint and node-disjoint paths in a class of self-routable interconnects,” IEEE Trans. Parallel Distrib. Syst., vol. 14, no.
4, pp. 383-393, 2003.
[17] Y. Yang and J. Wang, “Routing permutations on baseline networks with node-disjoint paths,” IEEE Trans. Parallel Distrib. Syst., vol. 16, no. 8, pp. 737-746, 2005.
[18] Y. Yang, J. Wang, and Yi Pan, “Permutation capability of optical multistage intercon-nection networks,” J. Parallel Distrib. Comput., vol. 60, no. 1, pp. 72-91, 2000.
Appendix
00Gjmf!Obnf;!Spvujoh`Cbtfmjof`opef`ejtkpjou/dqq!
00Bvuips;!ຫព!
00Fnbjm!Beesftt;!y99duiAzbipp/dpn/ux!
00Eftdsjqujpo;!Spvujoh!qfsnvubujpo!jo!b!Cbtfmjof!ofuxpsl!xjui!opef.ejtkpjou!qbuit!
00! ! ! !!!jo!gpvs!qbttft/!
00Joqvu;!b!qfsnvubujpo/!
00Pvuqvu;!dpouspm!ubh!gps!fbdi!qbtt/!
!
$jodmvef!=jptusfbn?!
$jodmvef!=gtusfbn?!
$jodmvef!=jpnbojq?!
$jodmvef!=dnbui?!
!
vtjoh!obnftqbdf!tue<!
!
dpotu!jou!O!>!2135-!N!>!3+O<!
jou!qfsnvuf\N^\O^-!jowfstf\N^\O^-!u\O^-!mbcfm\O^\O^-!vqqfs\O03^-!mpxfs\O03^<!
jou!tqbdf\N^-!ubh\O^\O^-!njeemf`qfs\5^\N^-!dpouspm\O^<!
!
00qfsnvuf\N^\O^!! รԫ٨।ق!spvuf!ऱ!qfsnvubujpo-!ࠡהޢԫ٨।قԫଡ!
00! ! ! ! ! qbsujbm!qfsnvubujpo/!
00jowfstf\N^\O^!! ޢԫ٨।ق!qbsujbm!qfsnvubujpo!ऱ֘ኙਠᣂএ-!!
00! ! ! ! ! pvuqvut!nbq!up!joqvut/!
00u\O^! ! ! ! u\j^!>!.2-!।ق!qfsnvubujpo!ऱร!j!ႈᝫڶ/!
00mbcfm\O^\O^! ! Աച۩ֱঁ-!ૹᄅᒳᇆޢଡ!qbsujbm!qfsnvubujpo!ऱ!joqvut/!
00vqqfs\O03^! ! vqqfs!qfsnvubujpo/!
00mpxfs\O03^! ! mpxfs!qfsnvubujpo/!
00tqbdf\N^! ! ! شאૠጩࡉᚏژؾছૠጩऱ!qbsujbm!qfsnvubujpo!ऱՕ՛/!
00ubh\O^\O^!! ! dpouspm!ubh/!
00njeemf`qfs\5^\N^! ।ق!tfnj.qfsnvubujpo!ڇ!Cfoft!OU!խ!spvuf!ࠩ!
00! ! ! ! ! խၴ!tubhf!ऱ!pvuqvut/!
00dpouspm\O^! ! ᚏژԫଡᑇऱԲၞۯ।ق/!
!
jou!njeemf)jou!b-!jou!l*<!00ૠጩԫଡ!tfnj.qfsnvubujpo!ڇ!Cfoft!OU!
! ! ! ! ! ! !!00խၴऱ!tubhf!ऱ!qfsnvubujpo!ऱᑇᖕ/!
wpje!dpouspm`ubh)jou!b-!jou!y*<!00ലᑇڗ!b!ޏګ!y!ۯցԲၞۯᑇڗ/!
jou!nbjo)*!
|!
! jou!vq`qfs-!mpx`qfs-!tj{f-!mfohui-!ibmg-!c-!o-!z-!e-!t<!
! jou!m-!v-!r-!q-!i-!j-!k-!l-!n-!d!>!2<!
! 00o!! ! ! ! 3!ऱ!o!ڻֱ!࣍!tj{f/!
! 00tj{f! ! ! ! qfsnvubujpo!ऱՕ՛/!
! 00vq`qfs-!mpx`qfs! ૠጩؾছऱ!qfsnvubujpo!։໊ګࠟଡ!qbsujbm!qfsnvubujpot-!!
! 00! ! ! ! ! ࠡژ࣋ڇ!qfsnvuf\N^\O^!ऱร༓٨/!
! 00mfohui! ! ! ।قؾছ!qbsujbm!qfsnvubujpo!ऱ९৫/!
! 00ibmg! ! ! ! ९৫ऱԫת/!
!
! dibs!bot<!
! ep|!
! ! jgtusfbn!!jo`tusfbn<!
! ! pgtusfbn!pvu`tusfbn<!
! ! jo`tusfbn/pqfo)#qfsnvubujpo/uyu#*<!
! ! pvu`tusfbn/pqfo)#spvujoh`qfsn/uyu#*<!
!
! ! ep!
! ! |!
! ! ! jo`tusfbn!??!o<!00ൕᚾூխᦰ࠷!qfsnvubujpo!ऱՕ՛/!
! ! ! dpvu!==!#Qfsnvubujpo!ऱՕ՛!;!#==!qpx)3-!o*!==!foem<!
! ! ! pvu`tusfbn!==!#Qfsnvubujpo!ऱՕ՛!;!#==!qpx)3-!o*!==!foem<! !
! !
! ! ~xijmf)o!=!1!}}!o!?!O*<!
! !
! ! tj{f!>!qpx)3-!o*<!
! ! e!>!3+tj{f<!
! ! t!>!tj{f!.!2<!
! ! z!>!3+o!.!2<!
!
! ! gps)k!>!1<!k!=!tj{f<!k,,*!
! ! |! ! !
! ! ! jo`tusfbn!??!qfsnvuf\2^\k^<!00ൕᚾூխᦰ࠷!qfsnvubujpo!ऱᑇᖕ-!!
! ! ! 00ܒឰຍଡᑇᖕਢܡฤٽ!qfsnvubujpo!ऱഗءޣ/!
! ! ! ep|!!
! ! ! ! d!>!2<!
! ! ! ! xijmf)qfsnvuf\2^\k^!?!t*!
! ! ! ! |!
! ! ! ! ! dpvu!==!#XSPOH"!ᑇڗ၌መ!#!==!t!==!#!ᓮૹᄅᙁԵ!]o#<!
! ! ! ! ! pvu`tusfbn!==!#XSPOH"!ᑇڗ၌መ!#!==!t!==!#!ᓮૹᄅᙁԵ!]o#<!
! ! ! ! ! djo!??!qfsnvuf\2^\k^<!
! ! ! ! ! d!>!1<!
! ! ! ! ~!
! ! ! ! gps)j!>!1<!j!=!k<!j,,*!
! ! ! ! ! jg)qfsnvuf\2^\j^!>>!qfsnvuf\2^\k^*!
! ! ! ! ! |!
! ! ! ! ! ! dpvu!==!#XSPOH"!ᑇڗբૹᓤΔᓮૹᄅᙁԵ!]o#<!
! ! ! ! ! ! pvu`tusfbn!==!#XSPOH"!ᑇڗբૹᓤΔᓮૹᄅᙁԵ!]o#<!
! ! ! ! ! ! djo!??!qfsnvuf\2^\k^<!
! ! ! ! ! ! d!>!1<!
! ! ! ! ! ~! ! ! !
! ! ! ~xijmf)d!>>!1*<!
! ! ! mbcfm\2^\k^!>!qfsnvuf\2^\k^<!
! ! ~!
!
! ! jo`tusfbn/dmptf)*<!
!
! ! gps)j!>!3<!j!=!e<!j,,*!00qfsnvuf!ࡉ!mbcfm!ॣࡨଖ/!
! ! ! gps)k!>!1<!k!=!tj{f<!k,,*!
! ! ! |!
! ! ! ! qfsnvuf\j^\k^!>!.2<!
! ! ! ! mbcfm\j^\k^!>!.2<!
! ! ! ~!
! ! gps)j!>!1<!j!=!tj{f!<!j,,*!00ubh!ॣࡨଖ/!
! ! ! gps)k!>!1<!k!=!z<!k,,*!
! ! ! ! ubh\j^\k^!>!.2<!
!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!00njeemf`qfs!ॣࡨଖ/!
! ! ! gps)k!>!1<!k!=!5<!k,,*!
! ! ! ! njeemf`qfs\k^\j^!>!.2<!
!
! ! 00dpvu!qfsnvubujpo/!
! ! dpvu!==!#]o#==#൞ᙁԵऱ qfsnvubujpo Κ]o#<!
! ! pvu`tusfbn!==!#]o#==#൞ᙁԵऱ qfsnvubujpo Κ]o#<!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! |!
! ! ! qfsnvuf\1^\j^!>!j<!
! ! ! mbcfm\1^\j^!>!j<!
! ! ! dpvu!==!tfux)o*!==!qfsnvuf\1^\j^<!
! ! ! pvu`tusfbn!==!tfux)o*!==!qfsnvuf\1^\j^<!
! ! ~!
! ! dpvu!==!#]o#<!
! ! pvu`tusfbn!==!#]o#<!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! |!
! ! ! dpvu!==!tfux)o*!==!qfsnvuf\2^\j^<!
! ! ! pvu`tusfbn!==!tfux)o*!==!qfsnvuf\2^\j^<!
! ! ~!
! ! dpvu!==!#]o]o#<!
! ! pvu`tusfbn!==!#]o]o#<!
!
! ! 00אՀޡᨏΔല!qfsnvubujpo!։ګࠟଡ!tfnj.qfsnvubujpot/!
! ! gps)j!>!1<!j!=!o<!j,,*!
! ! ! gps)k!>!2<!k!=!tj{f<!k,,*!
! ! ! |!
! ! ! ! jg))qpx)3-!j*!.!2*!=!k!''!qpx)3-!j!,!2*!?!k*!
! ! ! ! ! tqbdf\k^!>!tj{f0qpx)3-!j*<!
! ! ! ~!
!
! ! gps)n!>!2<!n!=!tj{f!<!n,,*!
! ! |!
! ! ! mfohui!>!tqbdf\n^<!
! ! ! ibmg!>!mfohui03<!
! ! ! q!>!tj{f0mfohui<!
! ! ! vq`qfs!>!3+n<!
! ! ! mpx`qfs!>!3+n!,!2<!
! ! ! l!>!1<!
! ! ! r!>!1<!
! ! ! gps)j!>!1<!j!=!mfohui<!j,,*!
! ! ! |!
! ! ! ! u\j^!>!.2<!
! ! ! ! jowfstf\n^\mbcfm\n^\j^^!>!j<!
! ! ! ! jowfstf\1^\j^!>!j<!
! ! ! ~!
! ! ! ep|!
! ! ! ! u\l^,,<!! !
! ! ! ! vqqfs\r^!>!mbcfm\n^\l^<!
! ! ! ! jg)vqqfs\r^&3!>>!2*!
! ! ! ! |!
! ! ! ! ! l!>!jowfstf\n^\vqqfs\r^!.!2^<!
! ! ! ! ! mpxfs\r^!>!vqqfs\r^!.!2<!
! ! ! ! ! u\l^,,<!
! ! ! ! ! jg)l!=!mfohui!.!2!''!l&3!>>!1*!
! ! ! ! ! ! l,,<!
! ! ! ! ! fmtf!
! ! ! ! ! ! l..<! ! !
! ! ! ! ~!
! ! ! ! fmtf!
! ! ! ! |!
! ! ! ! ! l!>!jowfstf\n^\vqqfs\r^,2^<!
! ! ! ! ! mpxfs\r^!>!vqqfs\r^,2<!
! ! ! ! ! u\l^,,<!
! ! ! ! ! jg)l!=!mfohui!.!2!''!l&3!>>!1*!
! ! ! ! ! ! l,,<!
! ! ! ! ! fmtf!
! ! ! ! ! ! l..<! ! ! !
! ! ! ! ~!
! ! ! ! gps)j!>!1<!j!=!r<!j,,*!
! ! ! ! |!
! ! ! ! ! jg)jowfstf\n^\vqqfs\r^^!=!jowfstf\n^\vqqfs\j^^*!
! ! ! ! ! ! txbq)vqqfs\r^-!vqqfs\j^*<!
! ! ! ! ! jg)jowfstf\n^\mpxfs\r^^!=!jowfstf\n^\mpxfs\j^^*!
! ! ! !!!!! ! txbq)mpxfs\r^-!mpxfs\j^*<!
! ! ! ! ~!
! ! ! ! r,,<!
! ! ! ! jg))u\l^!?!.2*!''!)r!=!)ibmg***!
! ! ! ! |!
! ! ! ! ! v!>!1<!
! ! ! ! ! ep!
! ! ! ! ! |!
! ! ! ! ! ! v,,<!
! ! ! ! ! ~xijmf)u\v^!?!.2*<!
! ! ! ! ! l!>!v<!
! ! ! ! ~!
! ! ! ~xijmf)r!=!ibmg*<!
!
! ! ! jg)n!=!3*!00vqqfs\j^!ࡉ!mpxfs\j^!ਢࠟଡ!tfnj.qfsnvubujpot/!
! ! ! |!
! ! ! ! gps)j!>!1<!j!=!ibmg<!j,,*!
! ! ! ! ! gps)k!>!1!<!k!=!tj{f<!k,,*!
! ! ! ! ! |!
! ! ! ! ! ! jg)vqqfs\j^!>>!qfsnvuf\n^\k^*!
! ! ! ! ! ! ! qfsnvuf\vq`qfs^\k^!>!qfsnvuf\n^\k^<!
! ! ! ! ! ! jg)mpxfs\j^!>>!qfsnvuf\n^\k^*!
! ! ! ! ! ! ! qfsnvuf\mpx`qfs^\k^!>!qfsnvuf\n^\k^<!
! ! ! ! ! ~!
! ! ! ~!
! ! ! fmtf!00ല!tfnj.qfsnvubujpo!٦։໊/!
! ! ! |!
! ! ! ! 00ޣנխၴ!tubhf!ऱ!txjudijoh!fmfnfout!א؆ऱࠡה!
! ! ! ! 00txjudijoh!fmfnfout!ऱ!ubh/!
! ! ! ! gps)k!>!1!<!k!=!ibmg<!k,,*!
! ! ! ! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! ! ! |!
! ! ! ! ! ! jg)qfsnvuf\n^\j^0q!>>!vqqfs\k^!''!qfsnvuf\n^\j^!?!.2*!
! ! ! ! ! ! |!
! ! ! ! ! ! ! qfsnvuf\vq`qfs^\j^!>!qfsnvuf\n^\j^<!
! ! ! ! ! ! ! i!>!1<!
! ! ! ! ! ! ! xijmf)ubh\j^\i^!?!.2*!
! ! ! ! ! ! ! ! i,,<!
! ! ! ! ! ! ! ubh\j^\i^!>!1<!
! ! ! ! ! ! ! ubh\j^\z!.!i!.!2^!>!1<!
! ! ! ! ! ! ~!
! ! ! ! ! ! jg)qfsnvuf\n^\j^0q!>>!mpxfs\k^!''!qfsnvuf\n^\j^!?!.2*!
! ! ! ! ! ! |!
! ! ! ! ! ! ! qfsnvuf\mpx`qfs^\j^!>!qfsnvuf\n^\j^<!
! ! ! ! ! ! ! i!>!1<!
! ! ! ! ! ! ! xijmf)ubh\j^\i^!?!.2*!
! ! ! ! ! ! ! ! i,,<!
! ! ! ! ! ! ! ubh\j^\i^!>!2<!
! ! ! ! ! ! ! ubh\j^\z!.!i!.!2^!>!2<!
! ! ! ! ! ! ~!
! ! ! ! ! ~!
! ! ! ~!
! ! ! gps)j!>!1<!j!=!ibmg<!j,,*!00ޓޏ!qfsnvubujpo!ऱ!mbcfm/!
! ! ! |!
! ! ! ! mbcfm\vq`qfs^\j^!>!vqqfs\j^03<!
! ! ! ! mbcfm\mpx`qfs^\j^!>!mpxfs\j^03<!
! ! ! ~! !
! ! ~!
!
! ! 00խၴ!tubhf!ऱ!txjudijoh!fmfnfout!ऱ!ubh/!
! ! c!>!o!.!2!<!
! ! m!>!qpx)3-!c*<!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! ubh\j^\c^!>!qfsnvuf\2^\j^0m<!
!
! ! 00ބנ!gjstu!tfnj.qfsnvubujpo!ऱ!njeemf`qfsnvubujpo/!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! jg)qfsnvuf\3^\j^!?!.2*!
! ! ! ! njeemf`qfs\1^\j^!>!njeemf)c-!j*<!
!
! ! 00Qbtt!2/!
! ! dpvu!==!#Jo!qbtt!2-!uif!qfsnvubujpo!jt;!#!==!foem<!
! ! pvu`tusfbn!==!#Jo!qbtt!2-!uif!qfsnvubujpo!jt;!#!==!foem<!
!
! ! gps)k!>!1!<!k!=!tj{f<!k,,*!
! ! ! jg)qfsnvuf\3^\k^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!qfsnvuf\1^\k^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!qfsnvuf\1^\k^<!
! ! ! ~!
! ! dpvu!==!foem<!
! ! pvu`tusfbn!==!foem<!
!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! jg)njeemf`qfs\1^\j^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!njeemf`qfs\1^\j^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!njeemf`qfs\1^\j^<!
! ! ! ~!
!
! ! dpvu!==!#]o]o#<!
! ! pvu`tusfbn!==!#]o]o#<!
!
! ! 00dpouspm!ubh!pg!qbtt!2/!
! ! dpvu!==!#Dpouspm!ubh!gps!uif!gjstu!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! pvu`tusfbn!==!#Dpouspm!ubh!gps!uif!gjstu!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! !
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! |!
! ! ! jg)njeemf`qfs\1^\j^!?!.2*!
! ! ! |!
! ! ! ! dpouspm`ubh)njeemf`qfs\1^\j^-!o*<!
! ! ! ! dpvu!==!#Uif!joqvu#!==!tfux)c*!==!j!==!#;!#<!
! ! ! ! pvu`tusfbn!==!#Uif!joqvu#!==!tfux)c*!==!j!==!#;!#<!
! ! ! ! gps)k!>!1<!k!=!o<!k,,*!
! ! ! ! |!
! ! ! ! ! dpvu!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ! pvu`tusfbn!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ~!
! ! ! ! dpvu!==!foem<!
! ! ! ! pvu`tusfbn!==!foem<!
! ! ! ~!
! ! ~!
!
! ! 00qbtt!3/!
! ! dpvu!==!#]o#!==!#Jo!qbtt!3-!uif!qfsnvubujpo!jt;!#!==!foem<!
! ! pvu`tusfbn!==!#]o#!==!#Jo!qbtt!3-!uif!qfsnvubujpo!jt;!#!==!foem<!
! ! !
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! jg)njeemf`qfs\1^\j^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!njeemf`qfs\1^\j^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!njeemf`qfs\1^\j^<!
! ! ! ~!
! ! dpvu!==!foem<!
! ! pvu`tusfbn!==!foem<!
!
! ! gps)k!>!1<!k!=!tj{f<!k,,*!
! ! ! jg)qfsnvuf\3^\k^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!qfsnvuf\3^\k^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!qfsnvuf\3^\k^<!
! ! ! ~!
!
! ! dpvu!==!#]o]o#<!
! ! pvu`tusfbn!==!#]o]o#<!
!
! ! 00dpouspm!ubh!pg!qbtt!3/!
! ! dpvu!==!#Dpouspm!ubh!gps!uif!tfdpoe!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! pvu`tusfbn!==!#Dpouspm!ubh!gps!uif!tfdpoe!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! !
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! |!
! ! ! jg)qfsnvuf\3^\j^!?!.2*!
! ! ! |!
! ! ! ! dpouspm`ubh)qfsnvuf\3^\j^-!o*<!
! ! ! ! dpvu!==!#Uif!joqvu#!==!tfux)c*!==!j!==!#;!#<!
! ! ! ! pvu`tusfbn!==!#Uif!joqvu#!==!tfux)c*!==!j!==!#;!#<!
!
! ! ! ! gps)k!>!1<!k!=!o<!k,,*!
! ! ! ! |!
! ! ! ! ! dpvu!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ! pvu`tusfbn!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ~!
! ! ! ! dpvu!==!foem<!
! ! ! ! pvu`tusfbn!==!foem<!
! ! ! ~!
! ! ~!
!
! ! 00ބנ!tfdpoe!tfnj.qfsnvubujpo!ऱ!njeemf`qfsnvubujpo/!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! jg)qfsnvuf\4^\j^!?!.2*!
! ! ! ! njeemf`qfs\2^\j^!>!njeemf)c-!j*<!
!
! ! 00Qbtt!4/!
! ! dpvu!==!foem!==!#Jo!qbtt!4-!uif!qfsnvubujpo!jt;!#!==!foem<!
! ! pvu`tusfbn!==!foem!==!#Jo!qbtt!4-!uif!qfsnvubujpo!jt;!#!==!foem<!
!
! ! gps)k!>!1<!k!=!tj{f<!k,,*!
! ! ! jg)qfsnvuf\4^\k^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!qfsnvuf\1^\k^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!qfsnvuf\1^\k^<!
! ! ! ~!
!
! ! dpvu!==!foem<!
! ! pvu`tusfbn!==!foem<!
!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! jg)njeemf`qfs\2^\j^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!njeemf`qfs\2^\j^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!njeemf`qfs\2^\j^<!
! ! ! ~!
!
! ! dpvu!==!#]o]o#<!
! ! pvu`tusfbn!==!#]o]o#<!
!
! ! 00dpouspm!ubh!pg!qbtt!4/!
! ! dpvu!==!#Dpouspm!ubh!gps!uif!uijse!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! pvu`tusfbn!==!#Dpouspm!ubh!gps!uif!uijse!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! !
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! |!
! ! ! jg)njeemf`qfs\2^\j^!?!.2*!
! ! ! |!
! ! ! ! dpouspm`ubh)njeemf`qfs\2^\j^-!o*<!
! ! ! ! dpvu!==!#Uif!joqvu#==tfux)c*!==!j!==!#;!#<!
! ! ! ! pvu`tusfbn!==!#Uif!joqvu#==tfux)c*!==!j!==!#;!#<!
! ! ! ! gps)k!>!1!<!k!=!o<!k,,*!
! ! ! ! |!
! ! ! ! ! dpvu!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ! pvu`tusfbn!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ~!
! ! ! ! dpvu!==!foem<!
! ! ! ! pvu`tusfbn!==!foem<!
! ! ! ~!
! ! ~!
!
! ! 00Qbtt!5/!
! ! dpvu!==!foem!==!#Jo!qbtt!5-!uif!qfsnvubujpo!jt;!#!==!foem<!
! ! pvu`tusfbn!==!foem!==!#Jo!qbtt!5-!uif!qfsnvubujpo!jt;!#!==!foem<!
!
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! ! jg)njeemf`qfs\2^\j^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!njeemf`qfs\2^\j^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!njeemf`qfs\2^\j^<!
! ! ! ~!
!
! ! dpvu!==!#]o#<!
! ! pvu`tusfbn!==!foem<!
!
! ! gps)k!>!1<!k!=!tj{f<!k,,*!
! ! ! jg)qfsnvuf\4^\k^!?!.2*!
! ! ! |!
! ! ! ! dpvu!==!tfux)o*!==!qfsnvuf\4^\k^<!
! ! ! ! pvu`tusfbn!==!tfux)o*!==!qfsnvuf\4^\k^<!
! ! ! ~!
!
! ! dpvu!==!#]o]o#<!
! ! pvu`tusfbn!==!#]o]o#<!
!
! ! 00dpouspm!ubh!pg!qbtt!5/!
! ! dpvu!==!#Dpouspm!ubh!gps!uif!gpsui!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! pvu`tusfbn!==!#Dpouspm!ubh!gps!uif!gpsui!tfnj.qfsnvubujpo!jt;!]o]o#<!
! ! !
! ! gps)j!>!1<!j!=!tj{f<!j,,*!
! ! |!
! ! ! jg)qfsnvuf\4^\j^!?!.2*!
! ! ! |!
! ! ! ! dpouspm`ubh)qfsnvuf\4^\j^-!o*<!
! ! ! ! dpvu!==!#Uif!joqvu#!==!tfux)c*!==!j!==!#;!#<!
! ! ! ! pvu`tusfbn!==!#Uif!joqvu#!==!tfux)c*!==!j!==!#;!#<!
!
! ! ! ! gps)k!>!1<!k!=!o<!k,,*!
! ! ! ! |!
! ! ! ! ! dpvu!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ! pvu`tusfbn!==!tfux)o*!==!dpouspm\k^<!
! ! ! ! ~!
! ! ! ! dpvu!==!foem<!
! ! ! ! pvu`tusfbn!==!foem<!
! ! ! ~!
! ! ~!
! ! dpvu!==!foem!==!#٦܂ԫڻႯ@!ᙁԵ z ।ق٦܂ԫڻΔᙁԵ o ঞᠦၲ!#!!
! ! ! !==!bot!==!foem<!
! ! !
! ! djo!??!bot<!
! ! pvu`tusfbn/dmptf)*<!
!
! ! ~xijmf)bot!>>!(z(!}}!bot!>>!(Z(*<!
! ! sfuvso!1<!
~!
!
jou!njeemf)jou!b-!jou!l*!
|!
! jou!j!>!1-!d!>!1<!
! ep|!
! ! d!>!d!,!)qpx)3-!j*+ubh\l^\b^*<!
! ! b..<!
! ! j,,<!
! ~xijmf)b?.2*<!
! sfuvso!d<!
~!
!
wpje!dpouspm`ubh)jou!b-!jou!y*!
|!
! jou!j!>!1-!k-!d<!
! ep|!
! ! k!>!y!.!j!.!2<!
! ! d!>!b0qpx)3-!k*<!
! ! jg)d!>>!2*!
! ! |!
! ! ! dpouspm\j^!>!2<!
! ! ! b!.>!qpx)3-!k*<!
! ! ~!
! ! fmtf!
! ! ! dpouspm\j^!>!1<!
! ! j,,<!
! ~xijmf)k!?!1*<! ! !
~!
Outputs:
Qfsnvubujpo!ऱՕ՛!;!9!
!
൞ᙁԵऱ qfsnvubujpo Κ!
!!1!!2!!3!!4!!5!!6!!7!!8!
Qfsnvubujpo!ऱՕ՛!;!9!
!
൞ᙁԵऱ qfsnvubujpo Κ!
!!1!!2!!3!!4!!5!!6!!7!!8!