Here are some easy-to-derive permutations of the letters A–Z that can be used as keys in a substitution cipher.
The rank of a permutation (here, key) is its index in lexicographic order. For 26 elements, the rank can be 0 to 26!−1 (approx. 4.0×1026).
 
  | Description | 
  Key | 
  Rank of permutation | 
 
 
  | QWERTY (first right, then down) | 
  QWERTYUIOPASDFGHJKLZXCVBNM | 
  261329910883437428257896643 | 
 
 
  QWERTYUIOPASDFGHJKLZXCVBNM twice | 
  JVTKZNXOGHQLRYUIPASMBECWFD | 
  152486412666512615169447653 | 
 
 
  QWERTYUIOPASDFGHJKLZXCVBNM three times | 
  PCZAMFBGUIJSKNXOHQLDWTEVYR | 
  234504162064049545711462131 | 
 
 
  QWERTYUIOPASDFGHJKLZXCVBNM to A–Z | 
  KXVMCNOPHQRSZYIJADLEGWBUFT | 
  169291497407938617366205540 | 
 
 
  KXVMCNOPHQRSZYIJADLEGWBUFT twice | 
  RUWZVYIJPADLTFHQKMSCOBXGNE | 
  276021879135295575419858661 | 
 
 
  KXVMCNOPHQRSZYIJADLEGWBUFT three times | 
  DGBTWFHQJKMSENPARZLVIXUOYC | 
  49680635539582787557480047 | 
 
 
  | QWERTY (first right, then up) | 
  ZXCVBNMASDFGHJKLQWERTYUIOP | 
  402124827445113083244718794 | 
 
 
  ZXCVBNMASDFGHJKLQWERTYUIOP twice | 
  PICYXJHZEVNMADFGQUBWROTSKL | 
  237708085608254601870692110 | 
 
 
  ZXCVBNMASDFGHJKLQWERTYUIOP to A–Z | 
  HECJSKLMXNOPGFYZQTIUWDRBVA | 
  111119442592450836983098983 | 
 
 
  HECJSKLMXNOPGFYZQTIUWDRBVA twice | 
  MSCNIOPGBFYZLKVAQUXWRJTEDH | 
  196746594605436406117426412 | 
 
 
  | QWERTY (first left, then down) | 
  POIUYTREWQLKJHGFDSAMNBVCXZ | 
  241581414900028804690603926 | 
 
 
  POIUYTREWQLKJHGFDSAMNBVCXZ twice | 
  FGWNXMSYVDKLQERTUAPJHOBICZ | 
  81188693442661072320171674 | 
 
 
  POIUYTREWQLKJHGFDSAMNBVCXZ to A–Z | 
  SVXQHPONCMLKTUBAJGRFDWIYEZ | 
  292172018534154798600901016 | 
 
 
  SVXQHPONCMLKTUBAJGRFDWIYEZ twice | 
  RWYJNABUXTKLFDVSMOGPQICEHZ | 
  277299460741165625479463112 | 
 
 
  | QWERTY (first left, then up) | 
  MNBVCXZLKJHGFDSAPOIUYTREWQ | 
  193626082625665042483168285 | 
 
 
  MNBVCXZLKJHGFDSAPOIUYTREWQ twice | 
  FDNTBEQGHJLZXVIMASKYWUOCRP | 
  79719808926054538699930063 | 
 
 
  MNBVCXZLKJHGFDSAPOIUYTREWQ to A–Z | 
  PCENXMLKSJIHABRQZWOVTDYFUG | 
  233999963718667018217794459 | 
 
 
  PCENXMLKSJIHABRQZWOVTDYFUG twice | 
  QEXBFAHIOJSKPCWZGYRDVNUMTL | 
  251205324312362369247547869 | 
 
 
  | QWERTY (first down, then right) | 
  QAZWSXEDCRFVTGBYHNUJMIKOLP | 
  248797301151407904617133962 | 
 
 
  QAZWSXEDCRFVTGBYHNUJMIKOLP twice | 
  HQPKUOSWZNXIJEALDGMRTCFBVY | 
  118258088903826438171686790 | 
 
 
  QAZWSXEDCRFVTGBYHNUJMIKOLP to A–Z | 
  BOIHGKNQVTWYURXZAJEMSLDFPC | 
  23765018475178019315579721 | 
 
 
  BOIHGKNQVTWYURXZAJEMSLDFPC twice | 
  OXVQNWRALMDPSJFCBTGUEYHKZI | 
  231341415471744781868791995 | 
 
 
  | QWERTY (first down, then left) | 
  POLIKUJMYHNTGBRFVEDCWSXQAZ | 
  241648289806417080446251862 | 
 
 
  POLIKUJMYHNTGBRFVEDCWSXQAZ twice | 
  FRTYNWHGAMBCJOEUSKILXDQVPZ | 
  87946970589823217451108968 | 
 
 
  POLIKUJMYHNTGBRFVEDCWSXQAZ to A–Z | 
  YNTSRPMJDGECHKBAXOVLFQUWIZ | 
  380820167610389149572746672 | 
 
 
  YNTSRPMJDGECHKBAXOVLFQUWIZ twice | 
  IKLVOAHGSMRTJENYWBQCPXFUDZ | 
  129927178892294049229024640 | 
 
 
  | QWERTY (first up, then left) | 
  PLOKIMJUNHYBGTVFRCDEXSWZAQ | 
  239840830976971201952734624 | 
 
 
  PLOKIMJUNHYBGTVFRCDEXSWZAQ twice | 
  FBVYNGHXTUALJESMCOKIZDWQPR | 
  78691863284376082181412380 | 
 
 
  PLOKIMJUNHYBGTVFRCDEXSWZAQ to A–Z | 
  YLRSTPMJEGDBFICAZQVNHOWUKX | 
  379526442651427616268420278 | 
 
 
  YLRSTPMJEGDBFICAZQVNHOWUKX twice | 
  KBQVNAFGTMSLPERYXZOIJCWHDU | 
  156115271471422150340437340 | 
 
 
  | QWERTY (first up, then right) | 
  ZAQXSWCDEVFRBGTNHYMJUKILOP | 
  388192499158573427125995264 | 
 
 
  ZAQXSWCDEVFRBGTNHYMJUKILOP twice | 
  PZHLMIQXSKWYACJGDOBVUFERTN | 
  247751645807139899130442707 | 
 
 
  ZAQXSWCDEVFRBGTNHYMJUKILOP to A–Z | 
  BMGHIKNQWTVXSPYZCLEOUJFDRA | 
  22471293516216486011253327 | 
 
 
  BMGHIKNQWTVXSPYZCLEOUJFDRA twice | 
  MSNQWVPCFOJDEZRAGXIYUTKHLB | 
  197009066152618015173953031 | 
 
 
  | Dvorak (first right, then down) | 
  PYFGCRLAOEUIDHTNSQJKXBMWVZ | 
  247073478763191548160234722 | 
 
 
  PYFGCRLAOEUIDHTNSQJKXBMWVZ twice | 
  NVRLFQIPTCXOGAKHJSEUWYDMBZ | 
  214480982882502002566421000 | 
 
 
  PYFGCRLAOEUIDHTNSQJKXBMWVZ to A–Z | 
  HVEMJCDNLSTGWPIARFQOKYXUBZ | 
  121102449205077797747529086 | 
 
 
  HVEMJCDNLSTGWPIARFQOKYXUBZ twice | 
  NYJWSEMPGQODXALHFCRITBUKVZ | 
  216172020443932507368532566 | 
 
 
  | Description | 
  Key | 
  Rank of permutation | 
 
 
  | distinct letters in “glib jocks quiz nymph to vex dwarf” | 
  GLIBJOCKSQUZNYMPHTVEXDWARF | 
  99454160994384952695005203 | 
 
 
  GLIBJOCKSQUZNYMPHTVEXDWARF to A–Z | 
  XDGVTZAQCEHBOMFPJYIRKSWUNL | 
  358770709587001807716649271 | 
 
 
  | distinct letters in “how quickly daft jumping zebras vex!” | 
  HOWQUICKLYDAFTJMPNGZEBRSVX | 
  117177961738059679785727800 | 
 
 
  HOWQUICKLYDAFTJMPNGZEBRSVX to A–Z | 
  LVGKUMSAFOHIPRBQDWXNEYCZJT | 
  183198398765051093490044836 | 
 
 
  | distinct letters in “jackdaws love my big sphinx of quartz” | 
  JACKDWSLOVEMYBIGPHNXFQURTZ | 
  139634704485008374455806412 | 
 
 
  JACKDWSLOVEMYBIGPHNXFQURTZ to A–Z | 
  BNCEKUPROADHLSIQVXGYWJFTMZ | 
  22985086302528128003281466 | 
 
 
  | distinct letters in “pack my box with five dozen liquor jugs” | 
  PACKMYBOXWITHFVEDZNLQURJGS | 
  232703500779777323990873870 | 
 
 
  PACKMYBOXWITHFVEDZNLQURJGS to A–Z | 
  BGCQPNYMKXDTESHAUWZLVOJIFR | 
  18654555748562333491124846 | 
 
 
  | distinct letters in “sphinx of black quartz, judge my vow” | 
  SPHINXOFBLACKQURTZJDGEMYVW | 
  288697946091433160961909004 | 
 
 
  SPHINXOFBLACKQURTZJDGEMYVW to A–Z | 
  KILTVHUCDSMJWEGBNPAQOYZFXR | 
  160327227224253205333366771 | 
 
 
  | distinct letters in “the five boxing wizards jump quickly” | 
  THEFIVBOXNGWZARDSJUMPQCKLY | 
  299164328271205257422613312 | 
 
 
  THEFIVBOXNGWZARDSJUMPQCKLY to A–Z | 
  NGWPCDKBERXYTJHUVOQASFLIZM | 
  205900181224109689120378327 | 
 
 
  | distinct letters in “the quick brown fox jumps over the lazy dog” | 
  THEQUICKBROWNFXJMPSVLAZYDG | 
  299176106047333456250557822 | 
 
 
  THEQUICKBROWNFXJMPSVLAZYDG to A–Z | 
  VIGYCNZBFPHUQMKRDJSAETLOXW | 
  330877843069357356886774129 | 
 
 
  | distinct letters in “waltz, bad nymph, for quick jigs vex” | 
  WALTZBDNYMPHFORQUICKJGSVEX | 
  341525322228321032414701952 | 
 
 
  WALTZBDNYMPHFORQUICKJGSVEX to A–Z | 
  BFSGYMVLRUTCJHNKPOWDQXAZIE | 
  18412177638055375228709237 | 
 
 
  | Description | 
  Key | 
  Rank of permutation | 
 
 
  | (the original alphabet) | 
  ABCDEFGHIJKLMNOPQRSTUVWXYZ | 
  0 | 
 
 
  | rotate the alphabet left by 1 letter | 
  BCDEFGHIJKLMNOPQRSTUVWXYZA | 
  16158688114800553828940313 | 
 
 
  | rotate the alphabet left by 2 letters | 
  CDEFGHIJKLMNOPQRSTUVWXYZAB | 
  32317376229601107657880624 | 
 
 
  | rotate the alphabet left by 3 letters | 
  DEFGHIJKLMNOPQRSTUVWXYZABC | 
  48476064344401661486820930 | 
 
 
  | rotate the alphabet left by 4 letters | 
  EFGHIJKLMNOPQRSTUVWXYZABCD | 
  64634752459202215315761216 | 
 
 
  | rotate the alphabet left by 5 letters | 
  FGHIJKLMNOPQRSTUVWXYZABCDE | 
  80793440574002769144701400 | 
 
 
  | rotate the alphabet left by 6 letters | 
  GHIJKLMNOPQRSTUVWXYZABCDEF | 
  96952128688803322973640960 | 
 
 
  | rotate the alphabet left by 7 letters | 
  HIJKLMNOPQRSTUVWXYZABCDEFG | 
  113110816803603876802576080 | 
 
 
  | rotate the alphabet left by 8 letters | 
  IJKLMNOPQRSTUVWXYZABCDEFGH | 
  129269504918404430631475200 | 
 
 
  | rotate the alphabet left by 9 letters | 
  JKLMNOPQRSTUVWXYZABCDEFGHI | 
  145428193033204984460046720 | 
 
 
  | rotate the alphabet left by 10 letters | 
  KLMNOPQRSTUVWXYZABCDEFGHIJ | 
  161586881148005538285312000 | 
 
 
  | rotate the alphabet left by 11 letters | 
  LMNOPQRSTUVWXYZABCDEFGHIJK | 
  177745569262806092073926400 | 
 
 
  | rotate the alphabet left by 12 letters | 
  MNOPQRSTUVWXYZABCDEFGHIJKL | 
  193904257377606645419827200 | 
 
 
  | rotate the alphabet left by 13 letters (Rot13) | 
  NOPQRSTUVWXYZABCDEFGHIJKLM | 
  210062945492407192977792000 | 
 
 
  | rotate the alphabet left by 14 letters | 
  OPQRSTUVWXYZABCDEFGHIJKLMN | 
  226221633607207659105484800 | 
 
 
  | rotate the alphabet left by 15 letters | 
  PQRSTUVWXYZABCDEFGHIJKLMNO | 
  242380321722006898510080000 | 
 
 
  | rotate the alphabet left by 16 letters | 
  QRSTUVWXYZABCDEFGHIJKLMNOP | 
  258539009836786435620864000 | 
 
 
  | rotate the alphabet left by 17 letters | 
  RSTUVWXYZABCDEFGHIJKLMNOPQ | 
  274697697951229900419072000 | 
 
 
  | rotate the alphabet left by 18 letters | 
  STUVWXYZABCDEFGHIJKLMNOPQR | 
  290856386059605756149760000 | 
 
 
  | rotate the alphabet left by 19 letters | 
  TUVWXYZABCDEFGHIJKLMNOPQRS | 
  307015074052383197749248000 | 
 
 
  | rotate the alphabet left by 20 letters | 
  UVWXYZABCDEFGHIJKLMNOPQRST | 
  323173759727501357875200000 | 
 
 
  | rotate the alphabet left by 21 letters | 
  VWXYZABCDEFGHIJKLMNOPQRSTU | 
  339332396622934254059520000 | 
 
 
  | rotate the alphabet left by 22 letters | 
  WXYZABCDEFGHIJKLMNOPQRSTUV | 
  355489958175679536168960000 | 
 
 
  | rotate the alphabet left by 23 letters | 
  XYZABCDEFGHIJKLMNOPQRSTUVW | 
  371622740621471539200000000 | 
 
 
  | rotate the alphabet left by 24 letters | 
  YZABCDEFGHIJKLMNOPQRSTUVWX | 
  387159802681541410160640000 | 
 
 
  | rotate the alphabet left by 25 letters | 
  ZABCDEFGHIJKLMNOPQRSTUVWXY | 
  387780251083274649600000000 | 
 
 
  | Description | 
  Key | 
  Rank of permutation | 
 
 
  | (the original alphabet) | 
  ABCDEFGHIJKLMNOPQRSTUVWXYZ | 
  0 | 
 
 
  | reverse the alphabet | 
  ZYXWVUTSRQPONMLKJIHGFEDCBA | 
  26!−1 = 403291461126605635583999999 | 
 
 
  | swap the halves of the alphabet (= Rot13) | 
  NOPQRSTUVWXYZABCDEFGHIJKLM | 
  210062945492407192977792000 | 
 
 
  | swap the halves of the alphabet, then reverse each pair of letters | 
  ONQPSRUTWVYXAZCBEDGFIHKJML | 
  225600058765421255996201647 | 
 
 
  | reverse each pair of letters | 
  BADCFEHGJILKNMPORQTSVUXWZY | 
  1!+3!+5!+…+25! = 15537113273014144448681647 | 
 
 
  | reverse each pair of letters, then swap the halves of the alphabet | 
  MPORQTSVUXWZYBADCFEHGJILKN | 
  195173310290862616374050666 | 
 
 
  | reverse each pair of letters, then reverse each half of the alphabet | 
  NKLIJGHEFCDABYZWXUVSTQROPM | 
  208118150835743019209949333 | 
 
 
  | reverse the order of the pairs of letters | 
  YZWXUVSTQROPMNKLIJGHEFCDAB | 
  387754347853591491135318352 | 
 
 
  | reverse each half of the alphabet | 
  MLKJIHGFEDCBAZYXWVUTSRQPON | 
  193228515634198442606207999 | 
 
 
  | reverse each half of the alphabet, then reverse each pair of letters | 
  LMJKHIFGDEBCZAXYVWTURSPQNO | 
  177691402361184379587798352 | 
 
 
  | Description | 
  Key | 
  Rank of permutation | 
 
 
  | rank 1025 | 
  ARDVUKPLXJSWFIZQENBCYHOTGM | 
  10000000000000000000000000 | 
 
 
  ARDVUKPLXJSWFIZQENBCYHOTGM to A–Z | 
  ASTCQMYVNJFHZRWGPBKXEDLIUO | 
  10988973006319482544479727 | 
 
 
  | rank 2×1025 | 
  BIGRPWFYSXLOKVZJMCAETQHNDU | 
  20000000000000000000000000 | 
 
 
  BIGRPWFYSXLOKVZJMCAETQHNDU to A–Z | 
  SARYTGCWBPMKQXLEVDIUZNFJHO | 
  279639846906972301745950994 | 
 
 
  | rank 3×1025 | 
  BYJMKFWLQIEOUHZDTSANVCGPRX | 
  30000000000000000000000000 | 
 
 
  BYJMKFWLQIEOUHZDTSANVCGPRX to A–Z | 
  SAVPKFWNJCEHDTLXIYRQMUGZBO | 
  279709176671131992344812402 | 
 
 
  | rank 4×1025 | 
  CPMHESNXKVZFYTWABIDOQJRUGL | 
  40000000000000000000000000 | 
 
 
  CPMHESNXKVZFYTWABIDOQJRUGL to A–Z | 
  PQASELYDRVIZCGTBUWFNXJOHMK | 
  241991914062433513306813123 | 
 
 
  | rank 5×1025 | 
  DGQBZCFLKJUEMNXVIWASPTORHY | 
  50000000000000000000000000 | 
 
 
  DGQBZCFLKJUEMNXVIWASPTORHY to A–Z | 
  SDFALGBYQJIHMNWUCXTVKPROZE | 
  281166950190841440462685623 | 
 
 
  | rank 6×1025 | 
  DWRXSKQUCPIYJOVHLFATGBEMNZ | 
  60000000000000000000000000 | 
 
 
  DWRXSKQUCPIYJOVHLFATGBEMNZ to A–Z | 
  SVIAWRUPKMFQXYNJGCETHOBDLZ | 
  291818523111615275570619432 | 
 
 
  | rank 7×1025 | 
  ENVSMXIGAFDTUHYJRZBWKLPQCO | 
  70000000000000000000000000 | 
 
 
  ENVSMXIGAFDTUHYJRZBWKLPQCO to A–Z | 
  ISYKAJHNGPUVEBZWXQDLMCTFOR | 
  135216181364283257626772178 | 
 
 
  | rank 8×1025 | 
  FDYOJHZSVPWLXNTABKECGRMQIU | 
  80000000000000000000000000 | 
 
 
  FDYOJHZSVPWLXNTABKECGRMQIU to A–Z | 
  PQTBSAUFYERLWNDJXVHOZIKMCG | 
  242416253053371217525663624 | 
 
 
  | rank 9×1025 | 
  FVBKDSQGUCRLIEXWMAJNHOPTYZ | 
  90000000000000000000000000 | 
 
 
  FVBKDSQGUCRLIEXWMAJNHOPTYZ to A–Z | 
  RCJENAHUMSDLQTVWGKFXIBPOYZ | 
  265142167158121460856278766 | 
 
 
  | rank 1026 | 
  GMEDYCISQPLFOTWNRUBHZJVXAK | 
  100000000000000000000000000 | 
 
 
  GMEDYCISQPLFOTWNRUBHZJVXAK to A–Z | 
  YSFDCLATGVZKBPMJIQHNRWOXEU | 
  383569866086354423893353922 | 
 
 
  | rank 2×1026 | 
  MXIHVENJDBUKZFRAGLPSWTOQCY | 
  200000000000000000000000000 | 
 
 
  MXIHVENJDBUKZFRAGLPSWTOQCY to A–Z | 
  PJYIFNQDCHLRAGWSXOTVKEUBZM | 
  238830203781478016963805157 | 
 
 
  | rank 3×1026 | 
  TINMUGRZSPCKHWFLQVEXOABDJY | 
  300000000000000000000000000 | 
 
 
  TINMUGRZSPCKHWFLQVEXOABDJY to A–Z | 
  VWKXSOFMBYLPDCUJQGIAERNTZH | 
  339046728374966188897409097 | 
 
 
  | rank 4×1026 | 
  ZTQPOIXNGDLRWHCAFJUBSKVYEM | 
  400000000000000000000000000 | 
 
 
  ZTQPOIXNGDLRWHCAFJUBSKVYEM to A–Z | 
  PTOJYQINFRVKZHEDCLUBSWMGXA | 
  244209320614217993705865087 | 
 
 
  | rank 283 | 
  AQPDLXHRYEWBMJUZTOCIVFKNGS | 
  9671406556917033397649408 | 
 
 
  AQPDLXHRYEWBMJUZTOCIVFKNGS to A–Z | 
  ALSDJVYGTNWEMXRCBHZQOUKFIP | 
  6620763069667280211228468 | 
 
 
  | rank 284 | 
  BHFGXTPIVKUAYROZQJCSNDMWEL | 
  19342813113834066795298816 | 
 
 
  BHFGXTPIVKUAYROZQJCSNDMWEL to A–Z | 
  LASVYCDBHRJZWUOGQNTFKIXEMP | 
  171058199132257289612072202 | 
 
 
  | rank 285 | 
  CNJLVODPRTMBXKGZIUESHFQWAY | 
  38685626227668133590597632 | 
 
 
  CNJLVODPRTMBXKGZIUESHFQWAY to A–Z | 
  YLAGSVOUQCNDKBFHWITJREXMZP | 
  379100402624547675797832373 | 
 
 
  | rank 286 | 
  EZRVNYGAFKBIQXPUWJLDSMOTCH | 
  77371252455336267181195264 | 
 
 
  EZRVNYGAFKBIQXPUWJLDSMOTCH to A–Z | 
  HKYTAIGZLRJSVEWOMCUXPDQNFB | 
  114750373622795779234781327 | 
 
 
  | rank 287 | 
  JZKSDXNAITBOGYHUVQRLMCFPEW | 
  154742504910672534362390528 | 
 
 
  JZKSDXNAITBOGYHUVQRLMCFPEW to A–Z | 
  HKVEYWMOIACTUGLXRSDJPQZFNB | 
  114659257011911665267744533 | 
 
 
  | rank 288 | 
  TYUJHWABRLCZNVOMQIPDEFSXGK | 
  309485009821345068724781056 | 
 
 
  TYUJHWABRLCZNVOMQIPDEFSXGK to A–Z | 
  GHKTUVYERDZJPMOSQIWACNFXBL | 
  97015609417375869605592682 | 
 
 
  | Description | 
  Key | 
  Rank of permutation | 
 
 
  | vowels (excl. W) first | 
  AEIOUYBCDFGHJKLMNPQRSTVWXZ | 
  2029684993851484569600000 | 
 
 
  AEIOUYBCDFGHJKLMNPQRSTVWXZ to A–Z | 
  AGHIBJKLCMNOPQDRSTUVEWXYFZ | 
  3237132339864412336984352 | 
 
 
  | vowels (incl. W) first | 
  AEIOUWYBCDFGHJKLMNPQRSTVXZ | 
  2029682317659275575296000 | 
 
 
  AEIOUWYBCDFGHJKLMNPQRSTVXZ to A–Z | 
  AHIJBKLMCNOPQRDSTUVWEXFYGZ | 
  3884559320036121004471730 | 
 
 
  | vowels (excl. W) last | 
  BCDFGHJKLMNPQRSTVWXZAEIOUY | 
  16159865896223577121738320 | 
 
 
  BCDFGHJKLMNPQRSTVWXZAEIOUY to A–Z | 
  UABCVDEFWGHIJKXLMNOPYQRSZT | 
  310225069417616263093075681 | 
 
 
  | vowels (incl. W) last | 
  BCDFGHJKLMNPQRSTVXZAEIOUWY | 
  16159865896223577121784400 | 
 
 
  BCDFGHJKLMNPQRSTVXZAEIOUWY to A–Z | 
  TABCUDEFVGHIJKWLMNOPXQYRZS | 
  294713808282987417931622773 | 
 
 
  | distinct letters in Pokémon names by Pokédex number | 
  BULASRIVYENCHMDOZQTWPFKGXJ | 
  27559051093659236464322413 | 
 
 
  BULASRIVYENCHMDOZQTWPFKGXJ to A–Z | 
  DALOJVXMGZWCNKPURFESBHTYIQ | 
  46779060972637454776205056 | 
 
These command-line Python programs can be used with the keys on this page.