The b(ack)log

All Possible Universes

Have you ever misplaced a photo and you just can’t find it? Well, I have, but instead of wallowing in despair, I decided to do something about it.

If you think about it, photos are just a bunch of pixels, and pixels are just a bunch of numbers. If you put enough random numbers together, eventually you’ll end up with the photo you’ve deleted!

Well, almost. It turns out there are quite a few numbers in a picture and if you consider all the possible numbers, you’ll realize that it will be quicker to get on a plane and fly to Giza, rebuild the pyramid and take the photo again. Yes, in the universe this was written in the pyramids all got destroyed.

Okay, maybe we can use a smaller camera, you know, like the one your Nokia phone had back in the day. Lets consider a 1 megapixel photo. And lets say each pixel can be expresses as (r,g,b) where r,g and b is a number between 0 and 255. That means that each pixel has 255^3 possible values. That is 16,581,375 total values each pixel can take! Put that to the power of a million, and you have all the possible 1 megapixel images in 8-bit RGB space. Several of them containing the pyramids in Giza.

I gave up on that number. I did however reduce the resolution a bit and tried again to calculate. A 100x100 pixel image gives us 1.6e+72197 possibilities. For your benefit, here is that number as a plain old integer rather than in scientific notation:

16047708192828413867003953063032448530488693506688062162732772009759788513539709557189126712760379687195910096125922390972702482320808980919936935473894133261255295620291594920610998654814134703041760947457800013428936768333014873740704926110281258161953832920067452228447945808148052218598376783343879257083249472995417978165379279885157382240759545938632908920936416740198316182312422049042470550134520568808127037476102493324609399675736549980973033121200283875464039458134670645867027528269939504018571171664102326109798005090800164192018375740064563570523771132781392041317812452870916977391323608773733834795107500420902793479354805723229482333800813370891619334263875423776863719031880614582707949612639591441945030119324159653005314544908594875159174278049639809578453097402914914807713898635882341267085565063970127750098714364159886544987574814960987243116053234498874065743246387901910909856090556220338212497080253373337831538878171358822896490560691406073413592333122381810584245315978475528892904414273699645168155962508068666763720238527522452332960379300014046662521948204728125714985741581735002316401439355592340466704651212311887178278863087244693541623648549766900451594775568271783047028720638259745302158920157548856264466586108371555667795212994606019472542851891990998009205015479855297767638915592957523472559212155577640267343128800031280524705192797911586269305094607166053859200400956792576276018095576117271410231032977336235297163231208818206243018276462220385790841640329422272894856934379510477195692803770837775824441664976938319081416979391561548501014904488347238712015084553268448299834000167851776701497048786031051827342491367322789895562660019498630256282510309442315888338118462157650147926089474692747312105848988314484665429158187212620958473483617680714480060022479933360027909452285418333146989669031670623782453796192919003796502267288774381823537436610349477815865381575263820694510876797702013546208442046032360250246122250209916704278950513106641557844196785341562307649082928959458099099666384061979701667610238178191528793838314931123523073424830520528191169435911714654164880341268550666114418472269013349129510456951150892564009719609898792642482138529883562584917221943828217329646415320038843632293415446269693647700591432054773943421883247803399414257654199831112703683339425553349311409775904963160079954064881853756932065546559434102472927503334412904985554392870875364183810130643196813849328287815408146189810058505931811685320760198536856671799338058669137077968721714419434349647568806261167396461034083032594523745178056137858485592840487710351053183918074285337121402669560287985657011968662143091067371234738057932813286114332079897424943222855064694855676800988490763281969996094202029282805706223720299029847086011808912477118840085139529959046150533490200450249439807607871402499684525391947332188703859058639990605210997658764071834615571214541757009539208562436155724026340069203934453610311445955824371730499887292755791594597669100591129138105469173086088953119841196856508293239937958661833362271786118845983583369694161913834499492055082884284350811725705694565343679245648218107768552000210267293000364601426814935240737676974715097509757884550381520943534586600491719038733425884296629754795088686154003767475569660957117222560034157456880593450238660877192204052806348511972534149371405726123935023898621611956184247168348788703439024646386597179599502848226535358768627924119647293578891527296211923461732404995532876225581985843460446850333906658453144017624672178759074237650035419388399299058938996843957842350156733394820397826238277528563676005237825802803197590339713351932741331893121119902581547823376745733953729926383679164203719048863631478781433825690985673649861872761955729232635320082813785862920353236480968140655146710324613281338619371502212310265487273469684135073844304772443111762099294353526197641790049474894730022358967698697581810046100120112648552982107751865545985385395673153146879757880201723580991088356680395360404299512411075077099157145746972122373866434395092394292229168508802533522349929814243713853230414000342255776696729981181509905465338347581313004026592009737966563736347974432663832710262703334169886999271552298156405311653072732462021627147548891438985764764008146065001308473363295836136355921181325532840001874948846070257912270121796217533078557354754761110606533913552064177621359621757745556048303975245406026226656385613921082507802159654688263567848037502534547564252837410653846415483860905203326394130518967961434209162980232972231388445598026373335097891068548432346893723336818961961057901243964467617287336111759518906595745260032899556977597518936009721698929064760035088823190616870475279933220995036659854369653928117864511446665931920845139166302176455167556738441523789101066232366693059476468911951312501119098956405031142031033673862095584829311895745797537905088453423202463668194992087522125451441628592179244077043140137502058363670448008518110714506316012611153816964802638341486020961627039727914532578205430452864919850886300395928104434164305008609085141008834779371198168328536593934989728307290103527596825740448940801765518381275232009764535429522370211951783942110158497470305287767189647449339947505109965673448276800331743435473666518691809010144289850679981558468439912539698294962622804443906910947851601982891593808300776699278884548028869437110638728102330032023630559978031301653268543494693310465874569128373961220215710647079168553893174368885299763256738769836613540674040461484404714615607173777366996784602250920998527117524571143414910742276790365832504685122186600847073842434502135472237426753150954700620876221189148775025094591096177973232496942050321798027816332360093754021438968457383877832863937323490942111934593173252845675957579298788793770290322185265239649737572674289543405924968896368482462903099291487469056486581507738882746809824917315954348572960132904445905321928179507247438599665843954611793204220050610751887201233059272061887853280914032113044667417617139338326751191877648182286095737482373078456155176272052848385458757177431602357546211120866939562702157205951536100446861507703003385654178886684400785806793718351351372318370819301582999239305043225402920306982452990262324057666105940341984381570814285194545828325202185298114746988236394406901939424767385245179946558475813130339881932332569715164276810711991915840557145686826722388137082559738385602892658614741689585601626467277788752819796500937034926317264333924441885354210373933123769758315563681039165637358742198214094068975443096876404575041656997501925088575831078352729890742815974646192179162619307933857545162175116118729103806886241832323121769039319822950579673575781195160516941733315939210886039933628634520838755052202728899626835443078602541272435953357687036459815623634668151023919501038417302972163703523395058115180605379048857653222063501204752247855219257133630987090136022182210240790104475150451190140657850466151563689863626751640323415145701955515738002935307387186465923889032392897177795430706060872439328268458102592528634565303098209163659743443667757745448327282964449556115591373727994594700116381235098867437070668397843530182475164038761637641290705128400758169205663937554139227324003146182917488172795256012369641736276326234861338692966365638386035528242827385347295723997506075175285464029191976801692472976162707976798112366310648027270441800129821799395851749955472051900921443831877735466104988543206048562817218384087821351566292847528584501098728876097945666908544893503147918565362879750983542404815271106238142794434172649033008801365472062316617060811626302097884885245303665205918936438461138871397298857601679938418982224283017755860594242345224588537490227470854976102350362644535696082482693631787994166484517847433103339287611916030984424257433630813100605985717427698094419809233242444181046688799804841756507840494933108684703143949798960969873227834017647310571993634101601923155657637233871533323629882310891581687105402337217379151829290033936298806208705539354084875413723339206869957469729980214984008789521421572685656158803080529231392400301680100822201809664594299303680977003012174063510780671794239062934141654712793282177587543553103459381578748652210607096146246629957215797203915186908911430983880337568600452777914092643453203077463497349758249120346968201251256398903960610264129682099399143419667436008067457538957685903169447358275984863836640503729527212886886296593157939533251006682101795623869883306901283526979021103359305126342942616989267011784585330285770438815588196562740574069244110582435406965808981184733323748232508324955724307459328691289769130826347092543388009100662938460416353018230771455395663441665230071911350315186509106783045460702147227538826967229740018318382060835439553987443600405429183267720350190814186954818292299205003625593054166768745917351365349441809980091420888557133970382471302702978449635621136521543921512262110876248109325218230345021062814668758333602455626421892709261796749484264412872699099008894280033922940049655012073398678614193044988685772316687511110796907402631270578238641483804580974204411229914144500758012506046356054533490266931761326445415626240965047273879519920988503113466597979557324706480340297473350468166213489130004768624219257369290241062585611562137264150606840321910930331606071078638479836404694952308003152925148352778469189665613676768958675618517607620662924452075689022651825534334284138281406783205250609308880325654863012802760425851446187144046575693257475485338838109647442632092067486664136107652958194986425020119717911639856991435959310431651594360024785450031644302072892899749337147448416245435874862800378774658992849783007780037918686246646402124945526164535367827577355060327401368759034616306212191365463360360726215660730580241389490702551598639342192385588834092722129057841934985941141704750209475663294277892706789171321671616471467026807627626453860629589510133395669502245141584431397197859364999440610866185348017789289382692532929208454971649198074450829350379492703726978729217998530543403522119100270950299854380861815990583719142996633749811631638354422353300858200118208021449468251819363719209224335034978651235405620218084292292103137529453778829560674403894929770350354112075531943061590854518262071721388579210308314578022782985286270651984947031716070726738478732311960208746621246969788330279180181308189498914518432836165760947659277755305994887551444998810354766420020462422152733716135508586055968229831969801160921835125867388612998930502484496883380176424022471882677015232016301206432376669216018701768437013953380066076095734234233508329360496788653964417582598402975478400752848586081478878806603837455953947759124193477725970142796613208099111055141602607725648440289384730946111138111169160680086971405957279027476611319278223439105919627996304684664823390446682275084665536730817954995649367877152343954892206730157166016832195219597786442419137718190812227166332487187632895309154964710481397705030852507986546491431270991971281002587020650539976655402205639555684813793239462370436819641960864616687384629557581018682400044544152827566747206799548461124332656098680226828847869767497761622975525052865354798442705995551747360062707281309270858853030987593653337498549056183073679604721791240682140572945843127904806687167127968551841451371539416723143122736320074551936963441872621238035995893914894631437548459681252307297073026222209611072905221521655466996741084582190508245728645783998735540495203277462682768128878082510436408952490932494569461975538058401837638159775747623682095524123529814019543584332577005854765015788076016422793242658017254746786853525954677915460253734495006546032481028247365081462467387428840215760330443360812754386788994902972730763285307518480406606842713008676685361234147489010844199232972364354265362343973035717208959549056590091313302796717106000808464028963112712383825124911853834590928766642833183294371053055321082416646478977054665202659262777765347923558854539207277487257677520582253936986876495377894452741377783923190161625713278719086635647414606244063213738242848956651858754676741792976340441978193784163635497201184403909405231858666247136126178627433474695040273436271368487606404624175509329818586491987968247489577913919483610233233489955868325950616540270741099149920157283404807642293005199320897274140319290006128561686745343594444581095783554826632761711745672108889627763654965773978950062513455437493797561332831771299443412710725760418112243721056269725496179067561376017430567848346868053442630700208903372809765001498229235850218823763992505744754252227690337083345605929953607297292024194724541691806635817451084886467883657628444476856120984953800283640958203044284939104067271840940528197339664635758969461872139718285522511563263069660311694677133833920621349974689506274979823210661935815628137166306406143508201323063448158510910551773262008920117902004182908498540210721207891979468032231799164296607926483490620895147840053182561108107246515778606376822430978020085191580214039964794791257909306732047491603144612298979291792708377213330921559596928988241982204549062391571875602178564329886815140455337060855550572799269035708478408812380461579180290781633450701684938262281879893491838432788733014883670440361998479054542872880723778522039103376426635175284836549623796077438897008346710260139259717152715044459935696769026882601041673254897693408485103007428634099303927556543078908245763308412798820461619772317135044978192895321557180472510161321946505487802269393487107890011662214517296029922501091824235242123756536831559436336135744101668586518556681757615347688451479570649412794477541587026513046284603165816347533653770780069041613929941084826366553429768408277379685443160579950140016152335348027397905510791029356099020361634942060974776599732324697632327271396232548274726061702718216417966341766095736240253099678673822935727109915384360087950076101354122638384670809238322746965805352877155245142403880475962683559510096047324063409693516041457901885475950163251860056504420596126134326064706537571293955356953962365949537605081965528207837060312977027493087101104006466286297469339369889511927047407281173821705103439567550344756026910886347553419549909068055622293418430811345771157265073688346903230326832608737755032267484050098573785230523366213640095916084510683934767128735799613466918250973231445479306559188321589758624531275894727508628004165611637603686601356052774994344298677490408338046642601603511925071115126949206271719101560513525085472921821236357335536176062449675044272195131792021537852354601656316288930062768121132819721788434100785155608612159570283038315844299930657676955731054875366589709556032800180364405713362396900237436720051076418613805693787058656882304589433719255139746042349146549034414255794293698369624237396663418249168038316098844035580491988267559933777879839239524371310908297684798007243095097287925468267713896523432924505885863348446333932559882045997060061008269365488903823387531586239493481420143845192633871370443257689914340245456692493568594272192639661475948564459826665479115774624114321752648358013669437550272690409793109449015450186964405267776957945456497291035027988899086668685358481495291376439240775544620537439995295318391537147760263731575563166961182951778509741124294160762123923487252197853581360700292834647541375029278496159857002539842887126058810582865360581151096867301096087990266224257254885274729880089633438476354149496582581034219936489295192255829714024097060145887008948479050506515997737570593502052741613351496923823634738047442210803134419547673191245881676648057689170574515320501456964438855515949575799545925181094506579440564674483938242576317194523621645591599254735611357019063487313290785701378601879820410245351860076693084117853507759177876592523955526034434278478817392499160261586157288874761612971059986015254965401510562128840742697913143838583802954095181400184781837169097540021342792918038861058155757779674805488941700362601691327017143505125648769868829937210402879387807099863914887886775333513509225812888807550403397156488532855841590210581576645679774481709639819593568008959884562041577958464258110851545608103651997088805770193945706349042806917846586642657358885441695533196885808291758165620816743586437282700788089384988894781140404081953487083349117614374516129838423889725091353542856490444203874598983378404288323697562572194357403381119560414031509401873732703535365310540730635211278328620538916736623558643042381950272798983901353266003705658451597556872787601748067248011934378047507794940159602282025205854108976286015052634360932718053298493248245467947892923755823523297689676343530427392286521226271670086152398056676237099375340892291141216284490463320695687684609613750930003596154589948211348716484287329024649495391535913902918723512019160350185031800298697797175232733062770421118476909518378029829730134842530750215423752346467571980922396102152040156045337314404593468240271640514403087181211620702399221251418076862310787873307017856098108389280891721432076943438194082278996596788906297737969734228359789222172052715535517361799440417186374944352257287170389864417620251563844247684658452667283009126313256734140898253982332928675342675071127769312557709266551951159885529243909658052063992426488060988323677018267867238729053133024830488322836782839966498647170237750060809847649878720031805360183394921613833093327371772233357504024901251773202941626523800096013164598552883283094295955646749494582375612663408310289982739147627458746252953852208202619908263945250089829057397044490735391059930877947215273006006879118158910431909091822272126415447660719307341049367912766358091759719941651781766606940113050057764979626700134556935131756580181301738840680416447573452527011613190245335563059092764846580442547060986478490048899048830603155523754610750097950001191312832719117510787381287342354082425067228312170232280506173793191047395760860266653593783836980950025604248629459747910635453142022967149221612194910138471681957227087836007214140096633599366908064708935902400962319683002258011686896974679465988477504446437910201246698094531362128504624792184006685722902314506168123464267963383952573080439297534163698863496545848239940326259165114872297785685001001306283473896906860978761856867646853896708954390169067869208580660769132313994427617018549913298405593431308285966909984318682887197743356344385597000719113510253527619019533666254199900285938509590861749641105366436329990579085560448836305029372471422188138870133896036389481903082193238449333827287469271957406844075436728725663468205469298805713976112313170004993671308607351582721256582455126198169095353811684059166316793732390677447073292470622470868138502246694115806995628728821660616936664696132737043982754982478022877872819348168256247822296295791315803830294560631211666564876747250485429578278642485516399604852190622604983673429391635448914500875426307651743386092271149885635613187548880555421761929818972599367267524153813403244563670715871513411266113145488454026839637184671958558681595813143806218325742253429354615905306694323694440033160968510730138820124281347375561842777336153847887260450704721589627288962037450234450401533811459837156424431526991026220446189388253175037129188490348379561196264516899094179872629715198353975331754603518804639916557497114619657663971586367954644307548906647177807838631608988084611598352093643823126441208114284242303122587068452356828373689055823591976714553367876981722731669244294129224955269219745875630437247878523011991054372664844399504944331268329237576473610759056168784128616954947600215111679019879593366540311563086840641301396324637060080635522254344192910021871475934858709258592578189045147564032432787826595563490441729447965955204841922391075550678618314914291997729394925164866426315265475697628791800150942793852647336065926097179732612834506401656142025146493820470481106372813299433125859389554942019394528304251292620000324429179033814836952451312757595478828583570547353242447633026829220394776106272790450503266942906750474672586192730886824227107235839526543461602853910744167651032539712698095882209774240516717359379239860087720195473612937226400554966992750277893832026232709044285811401767902869033580381034432480332983308318506147710474339320185299014673088006161884899310666607141562707433233692843688517492794027006511916465840732406131294957945123590126932111474147034662912505535523350653904893883259427327753436157083589000909975601108275566500813737916133895093493990870611639114339396155248357469494324678565031088902341424082066617841902340253575780624529007413437887169132372719201395238828929718468992673272004286749893373053328174945197576989891269184326572797375698695117645749404565050808373266343363334250806880626244060924345665191271206286109030716604587107068550506715568563300974576280174841534651997694468927498298170109411246051990245763108582669153386596837810910661921370979347666239779024493541855807584673548544544287374063443901591415124811132478062160045510116145023758883542558242118276197651293066010781989016897793866543418566490612657159678698852610917635224481451713829870161301690614318105033828754571989478957606863127737150592239769525136475130891478857752024849640137638333500465704697253540551053238893753108435718838939846356762087250063799964264192189603837844810707467344638184351092264975335653738361620618708404146687288442361882588065569633654947166874271143527434724047679420634585660324925511901481440329072728972746812599773967033135390575454403884868582686547338748830706559763129593327803594688591322962713430647756840788925700190819369979353714842206098616047961252383170312286167033285348558079420607539236691296674716162602029648503349858460707483942598029823063291733652008118566945135765205630833437160279959121742128514390954949930046054847530869643553674992866199227811884491828292963810540268158936318323574019823597838587925465360218029055920007889455861439638761342526235862084562477244918806827589235542210475854537922442845104920264142792737332798189461930694054221519206070248416693813002068466355479926219930646881021903387282975322487178813934574902255880955817368242782475731516034120661405862837566697605854136558098939980712158078175625561286214812631520903314342413248543121957827360961810524898641648355947305810900683574955875632902479578229860358929373003969283671412699630836645920118012069378622119519351806293071524833398091969658754994069631987755762870059759352256160815753658880829305362784000521276545223793337327023928187694711201407864832743774410559705000352591041627108743659444205785514204112753545843891080227151582428624157863111951165238007868858111586829074153744248464484077023765155502051034118587028336596663422323334391539389146433754577910643961209077432092555877322524288848043282884154908902259256971417034189364140800817580177866332829852970184963277376298458062774710603248405263333755436117240748549875621297052960980161267007852780479301129277521063127878029594732386217347551915918481800820853816539425677083135968634317819358026433927203577072859691274386418133834425995715533383759297722101743438636391661632591608666290341429410493604605597333293074472580752647673074595463445025157418394468070257700597585776819093322711352155136860516784338951643711759578709596257633733292936706173564016151603640144505128123730515952237857004993608721952844907258375997400751301991471946136173696792352058535329196097576614319001888323893857479154446674130508472756787214249842380082024113400077422213152058544713619393399754620692418704754246916545278574013086192669068576339681670194571208859123074896091180786252485470171468812424853941224601837277240071563147359676231858379915100964462433400673305981397959754871998979176322973372054723344453980632976613506828468382183279488113122931104578307970552719561391126448155232026259266230386077176014707229804885108602439962725678586579525642016593418688300654412097677127156456584546791308554903516758724844838015839023309141348550295844687434072871023413651090769713100645188223407354414879119513976583765101635681075201457744344972734223915316552606607851360849026051272261515006573704056155288184289675658757443481929734260329538171408601433152247548130028808092011763714938671181213102859339756383374404487867180761262539035842956940146187962270624409788711994404925926688225491587409720885304158772538373495342118818883984896083094607792065457852154570214373878901040023292047861023740084406653833737186848290085269020541966195641095868979255699084999016096546792039775129456083250431558123965689685104194145540081840161902768942782868264231542394851692044046584711034560657220018313543858942951695282340906009189749309904906533577058463175524629263380724773716050572754625791071341196199532708896485606254148077945479534943338550489910586799602270804699112854130725681274955855992841850684028819158419910597085000146510870907317223486290885429417274177788262374713272402118191291420128137254585822625172639923281874433653995153140163431394358428473366353861942031318113016245234016990696755748027041741761835936787230712234852634660151129031498670352614807756159332210895940154301068831869061400996310869727310255512307936511696408837546875816187287443648193632041859278958293161950952928420099935761066945158312027782081178116806483661727045651088423422244835450513701407179880670579554555791166135209368907262578215854887197671318026089372963302482004917336009414767241513356360665871365069335895193497595194939664903600521865821666417303098496585743256509891263708730723445313932287423751822929419157471788753699890465438225426272585059575465674168931175086775820040857852179157422625418110604963960264373208718595709481311306977584096206559118014225796195200463118072191757375253543842201371789612900829226443174743829510267648087757808706996868537633027861221978737942309549528470912073568928200522444658677809744922233349758907975581963976949631908969936361278870565586703099733773190139497263510087650327976437855839873156807831522277026786925582236715156692807861312214095431662517727394347072197112287391755739298174724880945655619550237998619897830032978102797051550850901318262365775449584295993591018610188969199918125599359724345206871617517570910427556923645378633716806106101054163870735989812159253655895332095922746846310566993323526946850010143532087561664387254380229467806650968961628155612594564844551988442477245054965570488884722902983018833264244658346902624910100344617045563313681369522307401317086029487059277432466047480598267782543005873755344383571122980585408030173879790843942137218590760586771597933313976947827789720523988004991730098527937243070420662434017655861758499762343636698913513175910032109503624706407890853232556706882383181773501712505220487055603403418531461569053154235809109529447386952421367887134669227635240446168598896410821688166866093940605268554943287069768973678639506843862057143810705590366453270771087222644773321372538879210779103533689837195891696271026220145680093737777959824058597907197590085075133318345932848580961305211900861901241370624463710503926755440804029508013880487243413489228996979975888378793879304903631209873548209797479535372933523984858599348450809903708361888551822625669544163503510049053714764821989117862001592636843710045353044656963639692712792070720671140881494698499925642008008586897059430586421954464114282958850277920381685949212377465332589608204805246913697731996287869874448372325925772618713545741513678467015289145826740838021964667548257416408677114265164145705131711466852558531337008721923485152336539123124712311438124665434318462846435008330927491805486709140886515510466961957817281409592513405681807503439987241819003331884258543000387549025378424119702605824756922269740660279710118924850661769871914655152411142936676180980509097010527180783402118088064816843897589856098184610513793669678415367913101350887372543839985405145089456191215125225022738786560870157857180698397119874582419402939212509999937845414237420077492599033590397970790578829494192805964833355836348501093801067622770340327355517221686807155039709984561887676109317219597943579546869186978414747301816995626733665058529929229335351933689396997703065661421878103160983065214981834492751571403293878903785869615595050829080542894908206755492992297833209403119073484792922625874867636589819780820439945486918668130855769512388508998736113086383481746605769945870781297655546826989065810447235761876710450353433018599092848672243107861061265998365932788284187835510292678259178878239091122625133182717210732489358359384121028618031778205839757265839779502626252748699617904616973483930080236736950264821665166517258647041202234916012962506277653727013984218003776122157185292712543013995628122773429022153735982221021271782251656507673878790117906541906151609979419126412277912668203440280306235319804161094776371245078629747138684415056796014144592835597728420205403895673645537573379702002924787885992423947015695893316314885465203939393544643333587479465286961674073982154811332637495175290331723078974140643665516812042639603899580644021490789417756662789179710235781745767948160956483408915892238776048446827734732606378002494215567812309519707048744166014414161208483882315775730901417424430728665139790685945046418439755121153008516565697880739593468793075036191864085232894721394086621400086545969578157848674054201736712588781183252726131114378983028914688018341672349508081271033589837908990275109556319637422064936885266207188728816504125017657961843988172530215404695567599625196860370746728610771169912931417039256070629868994191567870374410727356659841911128071643642983264740587191944415716402873373895302059813583560316052058385874428180655718090818126129135459126368777951797935685726100368052934255877004501814741400525857332828806245571318128388335057881928882225188441959168881253330624707189860757357628871441040960711349723378456030838728023996594531189807371957106615320952545447684736230612911418388250960054497583166372033127992892467191032221478420946590174256293351212001104682349090023030679243324551584999084289531216841559349136550087369850449944836580619495008382860953032228694013805682092819271212894576431313450217886618765863811264629284840920497955535060587608672579698451234774471497200400132716382433115072521859650629129285788028258856200192102996190552780338341820715636452933963540206241056874769476735502028715283670663005160638961106893666015563292003843432786516403014103866929331614672435036661998003809850276574118389890780815191372255798987223521323173073841503881216284424085100434597312000923497655939883871096726208937632111722990927066891481017156426796883035451917528628591698725967507080682263565142083383929990295791175017864198803709374043752335019710364784778961151238359361042515688422189394364815348649045537684562454496612369011423858432075263709229205119277580992775815033031586535014876246906110763742007372755139041199316308912242217662417880881082790397784386023165827287128898968905855324446823251027729539402765954368454280250131297060817679085521255798605746245957276521927943453255252911266848547188791549362230446704889042926407044966011404445343941603642626361255942155069272796537577878284173025494605576582228771871961827431468556150727852389198051395177283982421748086285498878484818997025250574867132689492275641393594333153043228288988326418672381158173280046759595108919570483462511499438195821017339322686937916791732594097826233751380223213741040036860974809574673443740684044140204166259480755325910979425773943036717636798016689461952326811218375406482108657551408394493432255823661224227421153364688350166473926419301070576338908024276120852403299428120003341950514756293282672817482469152849805402363914724875755555643150552674646927684391296280221949980084919879971389611770562695441177747814332822924429502887151140035049784953645288089594611210773799160475997824913036214534135774971886209264473742520348521469340289904968799457433627808816549107417457365933894797381834892233602985149279833613042491280501746039078275550817313071157870065898490491027775035452478180374386512397278755167590484872755882022040911349006883275458145406733634018572810743415706244256593392709192022047759172196047403395780332975183292839160995419548396863178568677621106542137994782137590643568889270354574208891511715112494362940220228824000890972691067475166560787494575870227348119886931147333680053239094321184306604321712032132669159596513458066715542998287472160970077688664332738238416253319055915177359989870060141749814306368484974453703386225432532171315797205398681006782399659375889952685520980288210190275115678904380078090639280427019805158658964687738035804900086774231611393172441306370383502101807718614153487563451520678047992175177929053273924935277266423772101977044235869736014801731883656087824564838358166949877876672953873197415436083361822229486793541914819117146873717135696769791743069192796077143074888963921143376856052471373528940447454413236926356332770822060839926451339804402424895298235022229581876897846856992204897758315311894111884711855396579466708729503034821320782431519218188150206644402728435156265621082571053746519300957007365936074738437368091477588611500155212311478544618658669641877557324788530018571071197023553020468707057186526638847736449940438686631682542575932878966005387239706170973230212338761587379664629406318231227889760662054713443349610841154880613141764959805740628970296802297434896068121528223548270583168209829100476008300497674684213219448060219314578129866823491131858159376306050372295227777437119910552898580820854131145684348375508717749609048588287564665202962669998846993363824600006741021680836252516611869534410046037216401271924513762153675569417978159162607837969674654923239879120259051207337608641251815040464807702288807239203632420213699615668100061298026771306774372028405206664619231509339312838689928012730282585966545950870170124127659718612189451472050955288819018175711798220506820756922519643683032017121984431585109693373830008678591906867134068003164157455293197788914193532396132765422864580984601736868933713018308571932044048637495567957278912602468078413141781736704317008451967407777060213296100097241450972547458421681468754351222039986959600496625394292053220347016251191613229146681274469126895322187351603039143591732080849928271429466868249354085484286534683101006923800564119558654743373718700308498647449978387196631222268310850179531416669992196552004254993159776381367452482442914255015715408940437850533056596869301974380069392517981142392831743687686754837841802016916001681117182744768715975447073118664638323732397329260392070312302631267181684340605917389610059414423597323370410374504182348204213675598777737824915305798005452981604972592447033989737727004256408917432628897235146035049526719317998917511955078403165257007292191766829016868320710127571073849496564968935868498639734184643892892267776504673909668847018015174845812631705523332055641115325788356328307950052663085888929777340529582861885539320112681969056201196009641920553404621171014925195567024938317928675474886329534472550810747835067178231980392483712549345953058107696232930487196886458864679400005752186467960080471316309868071262128397203208932407687414674341022206943336983906062066847052689441245132576081421842748002094963153162715898238080748133731401284039179886997452938327774815397164144295402010810573230554279132097631795699831892592183101812962718045335732172358161133469295976357840387338228245920947309429901617920535336226202885270883521951884575063597319902157491781867686413961987999395099066333290856915121161197305922752814390585755588219152708953534863341708921138013363501434945958710579931442129670453376769939085802828567163056113927565909455794840184569616216121066666148996878320250079966091227124795207166014532410010069955273076344790554960340926439128370775353591433323850879057486332093646407621005012038712401747619833910128772480252359774206037402919249479353040526954263058418296682805775350689122757533555666356146517917517048735824196296271833153519674920073822458973694173197851975531741531065945362107219676773163521930811088559228746352920806767855338674586845600431116390501869189014844612429621930163363222064542501227336494009820240993746121857672021929477606383179110419389082017892076802196216486124561865718603779094095765571213190429796498512025286247511904891930588395144462584239833643475764864270460879742617299228568118216598905481366595619163206424649961791658038655774778033253033465740901250976009798948768958599234659145624186387858225032106940981999014141199743970836166209378954460546669236912145181606467282803552915253633835801554514231708959623076557117803074301804419413865547894569674661831648700095486343080987979768600091034984483772582115041462508516981219993287515957668259678369768204196658659079810689617704876061060756133695889252430834559230090717184655118729069106757574290456458961423279768575057896349812920221709863598864771627152424637895527134436452776209645514347839731420539969432936815249925495377847352298600144439320130503712185886713727311356129701894539611497328984911832916839939089628219279157483477725013393421328446970966390971092092458763902169734571405313395232611687207986412849753620358211707363819172097760280694774197340164724456950398235347375886588436542184524429541709346740498557179664026008899049362928332116454259628894517071712253023655408120917001470590131919919378420981573103727142444193802916201091947705915737499929026934474436485435810192454334064122307148357898839381870099512407962193036829303920968293300900977011584764587803874223749200749066656430218636186496765326229845121899761896808926164088803245739275996155641261259585091445384037730414409469141748350617344785102305252050633319445417714573139338462210839915232379419960989615316771789790287136217638954952034165327754297102942641305248417908003756357820249404390162528047276442557991655133104374582540920313983611440254570004795728667169854288519540311873723136929399457837876001372079927121576183971197660510086731163826397204198897370805310455312976808499091021206952801492562107753651455620321178858979068099567983965194306513673969264345388539383929649182791033160313437661173668824039129586123615351331165666579706464708598920646927749357692544739771714939110479440088726812902524958049087715034143361341275029976255356447469466353165390360055517007784486999920563109267715577182209544624570127346739136968174824613337344926510744018772771928079774182457397990863822959930965929373475283541163676024092159366360307314730504010335997843404102893284038338457694168406152576147960816699144051269466230359811011438195306090680465259430820437759661582318718933473796044380400366431825314568221926901535237336760846230828637499351751206548583496092442220814612027589351762841947576629666643143968927998760778703301655728050074735506732015263489906939082819753922185982612731943041359659937003165972458764592783852519932196022584415710273270980029050774015557182603236068643711196054451820767313008970020979655921055646871388229491810356875547004952026319248705664221342472234364919624405089563277119647352605157136570210341686091099440516340950779998336537531218730417162312898847571322187933318584784162922327766600629325694828843662800311289279776296080797649192803529907051221592677062409323331469362149987941954477947185544257082828536219271418867373224648812703943904983879957697733256969923691622338287952147789400126397240759938931957683774830447699245175123913351302488340480095460138920078244892332200715801108033773162728183843869370187513570854823092988055887535971627695145449056705009214381849540864071409706461741482537363883753828248479182883183324617200933216350742032424961913142095419603237096558181252254385033307628808892378918741099653126412950109051909607891667352223518884839192082761596045776017226083810891063089325582737246518314853670040280892919875060406498367551486983479571970115171176666170674424717708172865984680201374710511097225838557337633178405854715444627550600566963024753202266301603850444907582813736802128179454641661355307786606183962704939700424944269516263471689355799854680691790695998190658080185895724794742755475331464142782227302394126145512714341481271408519513699194362019726582120883617611812234008984643316210099317119610402039839913404956743730243638844531451005567068776903159239936380065892112391105436542007550259448100248190153892809603372785222288104296806147645394595487821783920629511351640746866998100899165295859283728120406234804869026209854146889222246293704997824657894121304524656136579079709175652905037041098277399029025337315174491615214527667780864277823900342715306252813371003313029290516466011583343386987108906355672396379619088920050879274976273694158187414685792479576780148719806283803774233776786442150223054937997021048212480220711548949524830522624931033877274827934682407312747659887775122222603927459439707330642590704547458913634844140838962513876310047512055145574966762313963806646264370381759084268083625569452555472000365269950462803076860061680214225056651360248427779408874355399725278435562439887029385279772495052686111827837323407461453370362115450183401716938827445404631401938905147435992822619967852812326886072286118908985469675162684145999586134615149021613624707748739503013815021150905233985611141000706376711511779642948847938844201091599054035089024800334263277933857696388661809324346525884433434247581965236237627476510810758631450207846293611957789233286053876361068332782842814371904041016179065103295602102417309662819794929666906009435800257764904578150904132919538394968008222088599647380493029845217347370203963236282786566288037380508674894373375590886711337784312139150543629862294306618553319173035346219611056870390896645092156064185395114166606679982127122338057926628007706948390353795794637856492344131085931032400862253470742185160777447410558238486733841570471390852326986150313033271015548335026399805842487714351665863078718002613568225885862779582286860477847305121507938506123971693072976200869086065814174226791573306755063176289033918816173701928874349403528852606901955599719257617994084165153475903609358597100868784880349448177122930469379315073879723225630429371945095017046189549537710883574417193934187573598047981287597571852704956873401868017312062436291577876874529098901019356787191637898630533070099758648551084182726670215214473689979817361469071334093188653792013592297427274766915850497579150168423016406330588819264872728481936865590923111529535780971388998853003595762075795601189447230809564494622704714634798489150365056091933878639367149690553939386051072705786551150143705932283928601985024666498093370179438552457198571914259632583847550853525180213266155834778716384945154246867890485813604156100695484440316832088233266592810586529202066734776987685001170842421186483449782403911121201296425107804934056540875756416690776471113130309752036307201663800816620964479487757692764120121001454182332766669789215859476904247536237410231184812059382234466793102671611377835702805024389235360968493801352791976024678769334905605706174908775782350855378694561530209113497619079338695215657740532064957188479684103795071403802178372736787671724510429051228009637352119328956356946645844620549652975348472449132949363967469686161865941512965657671393616253534294510321352334048424975621411456021031859356443062901105197577429861978776292983011538509198476785719818172121144253767195475043402586966740654301836833849671751239647460806414529436187829494723734383070626786870687842568747915266452590416680136272827162814330056798910589007245626729723482432709952607474604368847941220562284755618133990654506703685991069400331323054689547117864344292816643706722650376539889404411111135606513297432437960526348036121226026487971768109544935248668139121724138884962656450673738687521155823650181118400612464517590802640097990749761776387517749947939981470218744081869007950090875985547522640518933924659432070982005781588689965962707216677228100902729631846586574858750957720240540140217722343495677095691516857727816753010964463771629437612345773943480921644211177551729795915369130983154511856187278334468918265501282858796672912673697417264819075718468625933885599823390673707683200907964938877773537424863418305013160663744907690627791266515717572967955743890428909430436156183394144758893517544664278104371158516264257167911518670023860639143299835123776979518064684572812522091191462356308036612424773018351880849422752625314406914016748678797326532749844241437300073378615916180527560842122553503283736081935573054268605528675924633068325381792674012356249125348979469331259039927585022983721264807663680557958146226924208831225832439525622972924747398166537470430263836231010128106929400807421984765632272901673774111662183684370835021489619199137156866397367467638422471189537468805206765411105406065134090359755412983814945766388189234650159243637121139127651322845598678126874704449583048100017605339288689752799411041572466891398513726506636865510451125726329040137699774370807738892890163666833528655072296323573678500187005928652431333112482019412541333002129648034044955083592984087248742812037025743128171815835286298339415878237351845068529568998886853751734684101561085878528389871399412928299903316934481505423287794750424901168936756984737018840387502677370927367061273987393272894526929665509760624156115188724881051020750352941490286013401904957703672843343075829549188676026143247809365227510633971011979354354233193920689840692366175084337435787473041236248125956623134957430201881383999925576531668605041010169544842812382697767773549083830082906193241424728652566086763896582132664862226646256106828556159610780332607336464595106788843629489564932455313231669812740005038967675145389645944353279883447879888322103393878863101900862341200973637396409097364560465061066146616561362344342638811990975891523617307148691995187888361185076625984408490239985398385829706525317459837801282717038174776676688344269501327244397586338532979731778731619121595091681724728090563553218815602681035257460027284925951304686654290678841825107439926991778738756298384937171300370609985453020966699678171224963789299917849143864042153996052042256091837074082405596762079565256962071957619521547874850985686492124489517670953404309026349652642258624804403095545763553104240490974264735851094733552520698341747881651310960952177360032554508990636270156077137402156403686270537762794249607997129542643445520677072639247264873960350103147578267113452704677552395241598561219697019130438641148643017705602903635638621508160907212693496522549814056100076583262147346502112030368594424708711970015194017051419581841385246809167765117064739681560105239318751071402610348772542996299687900618141759330349636622593082590806161768339758983244048828316187222154462678547644699223952231017163802070876018205310936340880631709587974426361313138522638954626681433748695382359072283026572094399219886551233863252611692094154826767968253054625101375039374702298139019391297318233447937125100709852458217714985236210745118343111443127913151535831760512415717471852359293054900497203038738885325233352535382923901014167128510005462429539466500036778451641464237925757463076813583557282404091399497804462871215960817503372375605426940134042584506334942454638261515367894757105702751532271676354894937411038349348814406610713200354445158471161313023729504112650224389418525182447410225948254406634400952055368732884296367815644221690755845458143355270944848943168188611491996359573905677686405842148278909617943188404415327406475159231496554817740717696795939734363627024168595855693645089850438146750538071400205697019218732315300810824260265649334552318101423158958441785537473260424748256787102143840514538023227492656025492489601706791490741783126937361348564724477488176680644749398003638149101952909076767937919394173073854862552651061644722695246286389814264286765152676813517915052137692206938795649593283062539494542648145709268807894426988128370716476720589081423770765779153919243328359168325441685848059690444413434547636174740309375360944843410686265957546608263820986957457151202457565451992609054377654365793836595303087520080118627797347814074934181530664045987551201909470209357080398887587988880902113988576802260220136448366087213722016801593209770898434899945863068669503813091161811108479122855562927922794005908922279163003073279483593138589749968789682287928016505344136701958388811335397228744892219289388274673076386378163666565659653745784077592532794565297491259278312023185417390612788492782786994999354923246068812299593190421631130091965216758786823198457535968691084077796231014429766973854165727534403522225383197781768428448943204089194978238297455876408105761212361955682687155856361507278478314061779707064573587758132073691079252246229547355680194505704277846864171354490224006210176457167199526937379901087389033908769930776769825681426803121282672930853126487162872600586785505629949238644586770129512570425586074531827300125174199024534600109615083808576675093380077732934862804118119115773512638457453036121707027774473752699214072027484687932277131350690035522405369634495340256143151657445793811889383870408941058644160137353313138984417737084638295035125861995618472680251724523024666954314730251085640544753737353253660842115100061038237078340153319217598707523975612203367526402507223297319243196967155468484578772322407591529981832897216815616069250375717666145828024263468355444353271982897191983234080915666358747065475011026265274801055498818753652144122258204136630246017850225472384677646280834025633077028412832185391304825534566806523576584539051147327710173471685802137082640776416051609321908240204088709414854004949906179035826228846998750871631453515129244254573496772498122562957602758755689810258288869285686085567472399609509353882784844589699936174355667659217915121817958838193984070084816373985073718058534163286270387822484302783230339251648608761584749525343619004203643633821241292747543745645691121503293374973589500556338023369553842782516472941495884007368306192422509101606162490585489476362372895366404083768435041633456890234721536860586766670851586306830266481287712905808485853744692885140926858561093909519419132154874877367285481475803206239400604125506557948019529557922688180393188384473883290002796157073760177494295775538405089519332612284454169274760700239734389724145533442497204360915513000736859894810838585000648925624030451617379988257368663156562945223626132897003610672759850554601310449481101462607229423350583080840597912122248561526316403272863178241802265809178444099203797745958949225394114617219617874641657521412977174945445142791430365900580878581116820109671829236036967179997120836644504261426514982764179811517357142920098050510299221747969086190667879196311887085860454638152477572418612228935131481865174630168885700662352466923870268363382982623302026921959528677290112977941924328644080820679756629097512436433908300744933328037949482008515681115771859310746691953132581401692664088627889183541457395127512480080353246763908580105893619379498136074101275481984274519505560312223218528767089031274914901972457358409344218954438020607621851085188147379617959340821095499632827420989557355057120992136067017794542827700099208613476554924329622647849843095497468491094152881764129539814444844445678787557003801434246306866696524626301002741585449871967293015898072861879767548787223857889667954036588031837641379146015961589902220136089708224645525180046129137740164279811254592443350127796322888106806750546511509424105944810349346929741922324707588704160785232684404489855026191178484083739066348432359450830919202212751857762940766677522325470062643024484254178579529971563958141437979823120757766888833982171251629456730593390026881196538438151359561500571228754380214790797410525591216459475749145056043981760876404699706508351363728179149414159608541865853297455400752105752202789331871733221061810094370682524580592860551426183012558992574657782479205216892409537122580571654845982775958080987661120880956022837156094715985359368321646336423900285513859161837878027870028902718915556845727477141040493346758203509714244509655162833613863584250988740990859510746426480318261184199838804633630725683774994716434985127245789139337850976990667361339984548707598052854887793309082377313937188195380397664582330703273138992141992312559630510649024672489236820759417667723604062531207286666426243081195112643723311383869668080158196354625904306587833060865689752624814616342140492053561966339087912256724550969834543061745937525399924106077253603487418101549432503066875857135102775821777213004880650961541651576801614002534819615906898438534370442260258037694926403935258810172380822074167038584987471427748332846851737543799364744490053465448431647897943829954620613018796041450855761705743504815366715210601932961316246153627641906731363179684805391768934834827556351536980170335972808155344664889078814740606905236181577826744367886512328419049090393006044377222922643146860717181220357071795082303245081290277184481982002376625758742169653192028612000447573342430438184929494693501329817156572091538390188398104129244121502111995341531557206822604577972531474746941022832426731046606702402795328574833163228225442129620664283699844164972949063345627589296042239445490390783593312168890283987192416099218194693043570468401971873683669657505094941292789052193028125765823724107919582386520064151182857773277447801181851237358488331969653019988653843778782929538404536439741697358503826080750309096043796375018050528483031043438064522328389443994856124285517707581063927959282997552720306978572497331423222808981435765442955591344344616106467173611185512331748824034036340548458903905074959919765523391742325982904690145129610905873752944023493227683883398837967754996097979810378482808258465743500297453603456017818489061960087210190724020686174655348073539242515875047593285294923020703743447825025527891679692029738952207267724355592549818818699725435528997842738038521632391647848966766249724381475348601801391115249717754471970395406016688427909012412839484562022507149485979687395348097244312703952394994066921680649611752400681197686870842297639939746382772526969289618460566085742035546548289888043122431567824560873692195437549335807420521453864514528900821140618249714979208283446322781882017067759335151514625218423251542271518700167996817262636531156189310923948892182860065621957910126698012345971975347420895560801696996874299336184965431699829978852930313158151884875063524966915072729269158313439960939198454121015826155136300659841046168862389915408222571607282230836119099101443632122696621777782932835575381814400736470659828038833184804053164210466561170373713835165711825580233265989147079858776524115304053037505931388220351931797794653821145673022997297742318577267224996763480563558886904992304823518597551367552446726712552700281535561645083547983222167640885190425006876902847187035050484927117697510362790375343265381269114679497659567598571593795803601720325139007507933822766804324353658812679222616554277422440720709769073167744746997505131709316941675624161889344939973974737184207715884292921116036718808776054952846807241879028562350245008656610685336735509531678613248270157303555061521864071286181989814546255399211127283321483159271172317891905950329195841131357860128776319709450854207693340535353964035239579045633573935146573879203647770690596567105998443613297862520779794716736570536550174576483314005493561082844153892003225504448331556178611658126040566947975532896584142430977414470064232696515431881948914706672138842165489299188591805322956486740076850590138163013556889306482784336528340942419625522558264201440253724900438528418200307256986924017860921292928885773849164039118548709415594831772868511885226476030994492865124292390106663976198333476679725135068433642035223661311881119226004982077697224412430348168239070256434767403578614554036392404753499690467297580838575102426820378880082896912693979870352172187107854596447094197589281966830690626142323075222085468021782474337032289577735711450763342283666381976712941114338463033715728054276763895958851233581120788799164033640307755041976893137643459541492844569105716087409197990467781432702022657800934070842639079901314654529744713089953840243173586929404125419919099353126777506367959034755315083454200302796875758452035879678130358482220916211204912857138459387502404963237491708740197854546854373195258374545838843844606750333962070022518753283844636671385399726747441572280339132060793905321837641807134186097644512156040820356870557977363923060629839472295362229734797650388455032616668394197257365360153514915114354476338147123337213460028441261685282774087461805869547609722504245443859731460754989892513279857431825791198595179535614724421191099144398180845511227144765898392718753444679860158399080713441647236030218997788790517493229523197430602172588069988730661409742473375390815977312698376199369607157212964959733725405415461930316755803185658424136295465972746919620146241821900011354621854116461934906598440083891471270981015813489140887502116998901308792661017688961194915076547516482639544791401667957106153661541649824483038135586827159654381861634955168214144538771094417053166266503593738046057128692520695816510638706285898593501645146560422702273732977724754337112301331976070682713225993393915637436734767938883052307195174485461647427853329883789729396499086671380166125825048601792768502871338975605029335255366179582620614828568637723301458340743848009358958723128686194316041390466544651106020611257397327054452483752775114703343243377143829655816023634125901929565357974672266975643106252526420589623970750358313483544049200520339102967720010531696256142749163530574404319685985515065522861413720665102374950331518995939383579098247408259414402682854593148457090380843946132957564738471056533712224808500734798389511096295865640854372046799088745503335648446652540560624209418304317995710399947382491165913415571899302608875615024272644774875455771652977476149525123528363200191007733101942795045818430937188207643888050059408506524741611185194537528116471415675120151673758693736324680295025224756389709606531659145805467445299078398093933279543995581324528899191929364605175677472141267695268733840041146036550617005141373249442089178447485487907547430297317161691281533109154909961099966845592535151640159881802915503339455112572127559636907824348912444354372688718157815718309125945087322149183773602441897517916654319885539066271979110576094888233617787918117642809302105371317947901426956067839493315776752141669204152204565637679706561977761758522225976811678352678416291393075289598251097212660899357840735030743589014767310137992963687870871526888285710167648264975166717079849146738865891922835651227160616501247098579394816467468692413748640756995919729855027079680403947092807196263296847333594127431656881706350319076375886045045994057477486692761866473303552511016710055631933357633622701770546064103563246458563289770494817846914054881911627013235204229415779588975964479873094288204219388766689678954736849422540580982760476687277847437434706933878547925460130178915745823218001749147905781451067598957811269388085226997359325718350563325662874851341035257623698995105876130322404190794918293741870087183188803082610276332172269593809925075296000693933609973878266552799338339339431408083154452758115995097380065747228024922222555203743776164547177997521829398965108197759475409454622181615343493444715387576461091417426144425855357553610820907150774576554854475979897614441371407076939497343559226144985334492200396772525043691845961991725066732832564189395040490603029743228892941184312658232609814720500712950496459775062902266269462981633659589931462440038431374824521173890467875887329167237189158780019642717015736610776285801995888794394136519172898731249565233054574718971257959519907818547017671973106731636114292188331610707426767127037483043894147031480695160129003160138563029671582738951283810043093896543761262703028589425341632057656951369440296699045046345024282273111986708134354657963933574104203594906252941242734819120828214409993029294345193227404298250050844106303707791304497457345740986693641642756905078853966121636187668866863097310281835877242627003249934233906369136955173359058115089663911733992518795759426114857676256575203410145336765376717036089076678946598201973004301773542513296950374333940434865351019435542768900794969441843883580294305382045766739593876902135580594984575492586410349940392564419798599588600334233686303290184657673999270234586853103633693309123900435604038346071175482664328345397523464145134081788834166869441173037533674743126466932037166228087752584809072587316585184157325233109443118704369950362476864575980701815790594527338876271124821670733072245574854804805747301330892673747167219112825804147304461163048297539867833777153241482798204473571235218642841249414637953632861683859942145659467762908527534372789861351475028741066630173605354557792688788631400262249306943891039926787145138055081005278680592826757467370290210004844172273521433906176701132382222997342924851224843893917261259034035006613086944923620086073743720968084593662746652430054769529466969359979417526482894493722189993502666030629964605028773538064297226500122310885385327156435902945151186470465790086810295555520783099156676412771275382789365038979442991113333851018357637227888951538559287373628238095857303275252144820382646830958567932531993890293577468420817211775418952876583183893375157399338965923749582423954906115371380235224728009524902353574643952572740961617747915933165720939394539729978185601499452748700822155860241606851085996411734958560010283279618483179619379255267448782542500029246067438271255332065198792832610468501268759841477146080169205132308542523530708809898896787477216908822829999923484542565560834439795254762923163908652766425087151755371098084219727193489832631958435385461389481729241833886116973180323983182171420029300002501653137446005480031946932513404464545963013476298477220077685774927241536776036575258534824954831279484686908642994182650382976672402620211058590207016093312778559104892071309935205338396334306319698982605920825415556180654052471767639037707208495752042851529432112683291911464726750066313138689879874480459282609419975714841823977218571344106738406752071800101316981934722883674511269075302876044026801551900875061555315921124812417131678459352383915515708043406034683891245643635928379828421005262506414241848037614367232997782763459354517701991495980626436636174811642518769575671379174418243745167144217559288952224160809328431219389298718369128507660963564076919604680263573778292426361261575528530535528841139972902108228277850632690134115149020128535451817230303590617363378570814708921709519570192254093986002132082991301098192947844512353202245677509921438087919298565185844228941284212603143668481841027114976600706359524253174203668788926753547496986843704545025170644528072772543475848175350833024964928455095299815484112986968359415098621315682635332116600378387911456382654080412964298704525533525267694493178458191939123475921290809536964848951524440413294297684679449485351207352410013982761304111803539220386423111945717128698818119643726122262061462115340087135527940023565916566404474820665573219297924464020566171458098652577453640540353401242425850794412885564517083373358914385451982563850865050080424796740670737971817364434694519715773717181309938889176169484858523757382637897700995991676749137106066250814560292936325694008233586543093597980902932456616979520573510300294270804096379586439774266663480948224906293681704123157724285849640014099368929669392015484183604176192215820458965303443658127067516035192939465863708685495086355427437839915747038272101761603441847526680071361703292773939727565036495330413581804058410945367718432521719576598174982837845246113736818491945889341210241712112561152182448437164957488282459247381687583699635455622564461826065041253171539561180878430551977363380596963617964551869105957767657300416276205329731942533061403735795546296938230236378326429852932235791214808854430244715366661786779644483004006544305870968635120753512382303862303700145226626408189667936887736620210878884291476629076124590442667910797108313411400083515119219230724192181629605401290054530232113706605699756878578855252800608181039958030608103563019409557933586219511649054327855405629069082334203595893967518719017700980938875043040512033183550113374746360609625839181548442091810086158350287917773655739802921301015499401057553429570161733268695216973954438635852578034329096015916261693841101039523483507010638479820740634355176659675695091636084149718073963560261034791879391036498977550540449036521523197812335847788479031346901460947721432533492287106228180020830947643367316293508162089216148781132051287348681326379777788115266261307606679068182185335259460892973162230410117722847026412078447334273493727917952383556584341131967735004207617383407656462297527414649898736664404825281640989412731532348434063769669847733249378591234962369253658614850494846240919640590352524868433309088229490254475869922979226973297883541819778940065005043685689372196296444697354913298963259695607606028037816778134433260412019029563758649138902996682018101049420555294394894390738905892557219979862305378147344668546273325249839481280925667470964631630515315409570560732620183437345970755065915572967478951093100805697205301299707789603720279401496647800729217654130886438906433405372909705971988609280008228249052468884771784820470013905963479088710438945661181483455684240917052728842387746232363031477224008870062265109366207044954302303237826109726508250112942238403868712442792510437837478232170957197473169449131768850761436548243526086551102001001610503106800094970706270115602924967080448884752278921946489421029230940526495348208151051057019957370404815162634526079892023428412925754373578592562387029569519598729647287232335115014658555251258210035999665738928639683958887092098560201203529677694244230120070885865906706661693545043321506110895541251271023129776919601900944990979261642997282492731019238163114802031231365593077045989973319828156852146807059785189217247260541407969326583093448404526882021212253233610963164403171122593328140654229328335046700625805498837137807104539967202921658131154386160465912127976548723218741676306748625499870919380285948267834468341496650049126277421971767515388915936888530256835160393176856299334901174905247811214569294334914260275899806416019404654397439541045242626143711917371930046692288078525657328115566756995722972239406938158457683212104587772179207976892326663577824972063256015768916699771704085363723710696633702000018171178841762520372194559186842137813397197316010567264335119172082341993576614168693040225156397238452533288024958816738962883847766533473670466188045152660545765170007599372250695898370979290171355542152205270613943101485472434701206323743659285108442810588110540156935935210727972519078039285890528987451555856902956641916827531298105760493046516425136960143210538579106461284308949202075052459256398642036242859889092036785554778772052375501882699887854432696008238277771652617219245318465586882719813912409117658281107436348899103672217709038717474405946339475508634678660170150268747943564903916452309142842310239573654187569988223955160188254649515662325689345504139166995944792502440735838393547150819728904848116360073703873778168428491536159961492882512850961164936205456899132764462294541329364976734141636762437560834418878859477355398028073685793141070638658185431667358583080807415994733957804887982364816024200200968657499974738516477241039687472140261334960323001509856259278912802000540752448784025304312741352093863589289639812184094816148320393346795683833484215119202199022808361185185489272308073088945680114017963696727629887367906306679881352096328115236493347275827845787522952590504896689602932453004338058123157297294571749677024859053915733859796542882739316029812574628634787241654362117308176793436629061789853310349762603792582588260765196016870511217469018005518409991518148850576951619551150465912437329888323694151637214295109686943168747532172605566377944254638661711236526383697007095031175778777976971411973968952711070117942647178805097301574524946189195751521399162803515867998085911230638812105207193446209296927953063954401930083892569748919173355135566564737844213602352230180620928584265011320550912270672181410015832765403774060080255916454075696074748999588048284704096444793471960443126870606924621360977511835317758035175187698123098651553355293675750584843127462290995036620213056007678845838243015182424148546519692839131569290758585401127779001366943540489395787722241331490141871613960881860297191551197444960483445904259623575282543466355431213105991086510747614884840901629115222420014553893520406700419461043990216635690557221562585859049607877415678668117136309691920053214503186046235373106380176631567223825383505708701806267281161774336632099239018304706614302226880067642721368497727979640185346709729956408632873748802676892550606398670989169747269948841651194998471119624972888924528106607912040312109168269555339195444292561000853578116613938537499568172412546501760253175006663644007261979845297766854427706581917614100421686743687926593351828143915093625026617331492239309129951478003617367451896804827176251246242533035852341628703871123073055519991713563001922902407224719724429323804544920365827207503348369930847878093184782143744402790751938684155423466231982964609685911309452809461547684637455313879846496770196971724344159361567418867429655602375345518281803803267219071930838729966977928612269163095427890816534766161495099447396321216988358422245759339816828739727016053498335669816266164485016621572868736493007808213804820252013239349646721249873357895829300842083527025584872795942834596581398128944286853974061911087611567746996479856741346742592467953630800874567596748102626315982018721546719756347465568248053312147764189106400712995616736432280260465596227549127090933426199506016112177325608957733104351034552315467234809609869136146679123478517145279786424316626355285690726559528967891368101458314699693657742646961606070182822508116296962350817650418796532476794991906876572156875755232143029204671447595648966492113690058261712962483845047919518383054613364117435094735918229205533082088950922020928746128841763048674441646366840407970609275924045983545777334728239526735252192104732811944561839436777112830361911350467701901800926591442927987035565302126699200501580919354707016217430720392036994825177416652659893722213271608441786611698898711011959222155523031365572712532465674926031862258543793676302176675868889404756795654749451175453085389114613615155396040970979535587532624816726490577956371161240047548319406866820153392607477573339453910271226955263555576921898219841770004293613545707347513758303788481967893819880424639125645728234667493677257759874487040782211934560653342543712938843644721451717834349704619674688816690374798282178780094624688812368204748425280490031504840694340086167002853788165275961268350714218450333779354969685986062936388213204121398780644921689508801266296138047889822159167953851051178151256057105441456398520907766008211692996777075091975356734474304051975283812896897218037299051089020701791983601332974830302909308607964743529521684602041791753251157702532786043467392891008712007845183974357653079819873367939355842294292529250573020291012215315089167694214132515272559495799364311398950945861789048493452152545991109066099385602949700814182589169861952264557122917869160386135346342236063123986177613585081307039084449263496537466096964230541245697682554330900630826919993601320045122155381923128957415815579174361918413261938828754355013903909337742483814254963284442676698753386568610628323707879251793952193737726510253622376106421584581419865020725005031556962165153893223334317743796205934641955804954575928691281841239974168608360142665700410763407983354692248796345003123071543089800936911226703074362376355566084384918212890625

Okay, so maybe that isn’t going to work so well. How about we just go for a black and white image? Each pixel can be either black or white, 2 options, and there are 10,000 pixels, iow. 2 to the power of 10,000. Wouldn’t be that big right?

19950631168807583848837421626835850838234968318861924548520089498529438830221946631919961684036194597899331129423209124271556491349413781117593785932096323957855730046793794526765246551266059895520550086918193311542508608460618104685509074866089624888090489894838009253941633257850621568309473902556912388065225096643874441046759871626985453222868538161694315775629640762836880760732228535091641476183956381458969463899410840960536267821064621427333394036525565649530603142680234969400335934316651459297773279665775606172582031407994198179607378245683762280037302885487251900834464581454650557929601414833921615734588139257095379769119277800826957735674444123062018757836325502728323789270710373802866393031428133241401624195671690574061419654342324638801248856147305207431992259611796250130992860241708340807605932320161268492288496255841312844061536738951487114256315111089745514203313820202931640957596464756010405845841566072044962867016515061920631004186422275908670900574606417856951911456055068251250406007519842261898059237118054444788072906395242548339221982707404473162376760846613033778706039803413197133493654622700563169937455508241780972810983291314403571877524768509857276937926433221599399876886660808368837838027643282775172273657572744784112294389733810861607423253291974813120197604178281965697475898164531258434135959862784130128185406283476649088690521047580882615823961985770122407044330583075869039319604603404973156583208672105913300903752823415539745394397715257455290510212310947321610753474825740775273986348298498340756937955646638621874569499279016572103701364433135817214311791398222983845847334440270964182851005072927748364550578634501100852987812389473928699540834346158807043959118985815145779177143619698728131459483783202081474982171858011389071228250905826817436220577475921417653715687725614904582904992461028630081535583308130101987675856234343538955409175623400844887526162643568648833519463720377293240094456246923254350400678027273837755376406726898636241037491410966718557050759098100246789880178271925953381282421954028302759408448955014676668389697996886241636313376393903373455801407636741877711055384225739499110186468219696581651485130494222369947714763069155468217682876200362777257723781365331611196811280792669481887201298643660768551639860534602297871557517947385246369446923087894265948217008051120322365496288169035739121368338393591756418733850510970271613915439590991598154654417336311656936031122249937969999226781732358023111862644575299135758175008199839236284615249881088960232244362173771618086357015468484058622329792853875623486556440536962622018963571028812361567512543338303270029097668650568557157505516727518899194129711337690149916181315171544007728650573189557450920330185304847113818315407324053319038462084036421763703911550639789000742853672196280903477974533320468368795868580237952218629120080742819551317948157624448298518461509704888027274721574688131594750409732115080498190455803416826949787141316063210686391511681774304792596709376

Or 1.995e+3011 in scientific notation :) That is still way too many images to generate!

Lets start with a black and white 4x4 pixel imager, only 65,536 options! My laptop can probably do that! Rather than generating thousands of images, let’s combine all of them in one big image.

# Generate every image of size 4x4

from PIL import Image
from random import shuffle

s = 4 # side length
rows = 256
cols = 256
image = Image.new('RGB', (cols*s, rows*s) )

universe = list(range(1, 2**(s**2)-1))
shuffle(universe)

for ii, i in enumerate(universe):
    ro = (ii)//cols * s
    co = (ii)%cols * s
    for y in range(s**2):
        color = 255 if i >> y & 1 else 0
        row = y//s
        col = y%s
        image.putpixel( (co + col, ro + row), (color, color, color))

image.save('image-{}.png'.format(universe[0]))

And here is the result:

An image of all possible universes as observed through a 4x4 black and white camera

If you look closely, you’ll see the pyramids, somewhere.

The code could use some explaining, or to put it differently, I’m writing this a year after I actually did the little experiment and I would have appreciated if 1 year dumber me actually explained what he did.

First, it’s using PIL to create 1 big image. 2**16 is a square, so we can put 256x256 images in a perfect square!

Secondly, what am I doing here?

universe = list(range(1, 2**(s**2)-1))
shuffle(universe)

Well, since our images are only black and white, each image can be represented as a 16-bit binary string. So by counting up to 2**16, we’ve generated all the possible images. And then we shuffle the numbers, because the sequential pattern doesn’t look that good.

Next we generate a picture from the data. We need to determine where in the bigger image each 5x5 images should be put.

for ii, i in enumerate(universe):
    ro = (ii)//cols * s
    co = (ii)%cols * s

To convert the number to an image, we look at the value of the bit and break up the consecutive binary string into a 4x4 matrix by putting 255 or 0 at the right row and column.

    for y in range(s**2):
        color = 255 if i >> y & 1 else 0
        row = y//s
        col = y%s
        image.putpixel( (co + col, ro + row), (color, color, color))

You could probably do 5x5, that would give you 33.554,432 possible images. If you stick them all together (I leave the geometry for you) it will give you a 838 megapixel image. This will be big, but not impractical, NASA has a 1,545 megapixel image of the Andromeda Galaxy.

Finally, why the mention of alternate universes? Well, the image we’ve generated is an accurate depiction off all possible events that occurred, is occurring or will possibly occur in all possible universes as observed by a 4x4 pixel black and white camera!

Special mention to Jeff Dinham - a lunchtime conversation we had led to this experiment - sorry I couldn’t get you a high-res picture of Snowball III.