Discuss Scratch

excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

Excelguru's stuff

As Wikipedia says (see page here), there are other kinds of “exponent towers” different from tetration (the ↑↑ operator). There are:

Iterated exponentials (a^a^…^a^b)
Nested exponentials (a^b^…^y^z)
Infinite exponentials (a^b^c^d^…)

Here is a notation I came up with for iterated exponentials. I call it hash notation.

a#b = a^b
a#[n]b = a^(a#[n-1]b)

Where #[n] represents n #'s

a#b = a^b
a##b = a^a^b
a###b = a^a^a^b
a####b = a^a^a^a^b

Hash notation has the neat property that a#[n](a#[m]b) = a#[m](a#[n]b) = a#[n+m]b (thanks someone who I forgot his username for showing how to type square brackets!)

I also have an extension. It is called hash-semicolon notation.

a@;#b = a@b (@ represents the rest of the expression)
a@;#[n];#[m]b = a@;#[x];#[m-1]b where x = a@;#[n];#[m](b-1)

Also, here are some names for the higher so-called hyper-operations:

+ addition
* multiplication
^ exponentiation
↑↑ tetration
↑↑↑ pentation (see Wikipedia page here)
↑↑↑↑ hexation (see Wikipedia page on hyperoperations here)

We can continue:

↑↑↑↑↑ heptation
↑↑↑↑↑↑ octation
↑↑↑↑↑↑↑ ennation (not nonation)
↑↑↑↑↑↑↑↑ decation

undecation, dodecation, triadecation, tetradecation, pentadecation, hexadecation, heptadecation, octadecation, ennadecation, icosation
icosunation, icosiduation, icositration, icositetration, icosipentation, etc., triacontation, triaconta-unation, etc., tetracontation, etc., hectation

Lastly I have a notation I call Graham notation. I call it that because the numbers it result in are similar in construction to Graham's number.

a↑[b]c:1 = a↑[b]c
a↑[b]c:d = a↑[a↑[b]c:(d-1)]c

Examples:

7↑↑↑↑↑↑↑7:7 = f(7) where f(0) = 7 and f(n) = 7↑7
3↑↑↑↑3:64 = Graham's number
3↑↑↑↑↑3:64 > Graham's number
3↑↑↑↑3:65 = 3↑[3↑↑↑↑3]3:64

Last edited by excelguru (June 26, 2015 18:51:53)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

More up-arrow extensions!

The obvious continuation is to have there be a symbol @ such that:

a@b = a{{…{{↑}}…}}a with b pairs of braces

I decided this should be [↑]. This lets us have:

a[↑↑]b = a[↑][↑]…[↑][↑]a with b [↑]'s
a[↑↑↑]b = a[↑↑][↑↑]…[↑↑][↑↑]a with b [↑↑]'s


Now the next choice is to have yet another type of bracket. I am going to use chevrons or angle brackets.

a⟨↑⟩b = a[[[…[[↑]]…]]]a with b pairs of square brackets

Let's have a generalization.

[] -> {}_(2)
⟨⟩ -> {}_(3)

What comes next?

I am thinking about it. We can define a{}_(↑)b = a{}_(b)a. What is the next type after that? I am currently thinking about it. Perhaps {}_(↑↑).

What are you waiting for?

How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

SUPER ACKERMANN FUNCTION

I came up with this function as an attempt to extend the Ackermann function. Here is what I got:

A(n) = n+1 and A() = 1
A(0,#) = A(#) (# stands for “the rest of the arguments” like X in chained arrows)
A(#,a,0,0,…,0,0) = A(#,a-1,1,1,…,1,1)
A(#,a,0,0,…,0,0,b) = A(#,a-1,b,b,…,b,b)
A(#,a,b) = A(#,a-1,A(#,a,b-1))

Examples:

A(1,0,x) = A(x,x)
A(1,1,0) = A(1,0,1) = A(1,1) = A(0,A(1,0)) = A(0,A(0,1)) = A(0,2) = 3
A(1,1,1) = A(1,0,A(1,1,0)) = A(3,3)
A(1,1,2) = A(A(3,3),A(3,3))
A(1,2,2) = A(1,1,A(1,2,1)) = A(1,1,A(1,1,A(1,2,0))) = A(1,1,A(1,1,A(1,1,1))) = A(1,1,A(1,1,A(3,3)) =

f(f(…(f(f(3)))…))
with f(f(…(f(f(3)))…)) f's
with f(3) f's
where f(x) = A(x,x)

And there's also A(2,2,2), and A(3,3,3), which I call the triliad.

NUMBERS

Zeriad = A() = 1
Uniad = A(1) = 2
Duliad = A(2,2) = 7
Triliad = A(3,3,3) - this number is probably greater than graham's number
Tetriad = A(4,4,4,4)
Pentiad = A(5,5,5,5,5)
Hexiad = A(6,6,6,6,6,6)
Heptiad = A(7,7,7,7,7,7,7)
Octiad = A(8,8,8,8,8,8,8,8)
Enniad = A(9,9,9,9,9,9,9,9,9)
Dekiad = A(10,10,10,10,10,10,10,10,10,10)

Let's have X(n) = A(n,n,…,n,n) with n n's

Icosiad = X(20)
Triacontiad = X(30)
Tetracontiad = X(40)
Pentacontiad = X(50)
Hexacontiad = X(60)
Heptacontiad = X(70)
Octacontiad = X(80)
Ennacontiad = X(90)
Hectiad = X(100)

Thousiad = X(1000)
Millioniad = X(1000000)
Billioniad = X(1000000000) (not putting the commas because in the future I might extend the X function to multiple arguments)

Last edited by excelguru (June 29, 2015 20:41:22)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

More hyper-operators

Remember how I named the hyper-operators (I may have changed the names since I introduced them)?

Addition (+)
Multiplication (*)
Exponentiation (^)
Tetration (↑↑)
Pentation (↑↑↑)
Hexation (↑↑↑↑)
Heptation (↑↑↑↑↑)
Octation (↑↑↑↑↑↑)
Ennation (↑↑↑↑↑↑↑)
Decation (↑↑↑↑↑↑↑↑)
Hendecation (↑[9])
Dodecation (↑[10])
Triadecation (↑[11])
Tetradecation (↑[12])
Pentadecation (↑[13])
Hexadecation (↑[14])
Heptadecation (↑[15])
Octadecation (↑[16])
Ennadecation (↑[17])
Icosation (↑[18])
Icosihenation (↑[19])
Icosidiation (↑[20])
Icositriation (↑[21])
Icositetration (↑[22])
Icosipentation (↑[23])
Icosihexation (↑[24])
Icosiheptation (↑[25])
Icosioctation (↑[26])
Icosiennation (↑[27])
Triacontation (↑[28])
Triaconta-henation (↑[29])
Triaconta-diation (↑[30])
Triaconta-triation (↑[31])
Triaconta-tetration (↑[32])
Triaconta-pentation (↑[33])
etc.
Tetracontation (↑[38])
Pentacontation (↑[48])
Hexacontation (↑[58])
Heptacontation (↑[68])
Octacontation (↑[78])
Ennacontation (↑[88])
Hectation (↑[98])
Hecta-henation (↑[99])
Hecta-diation (↑[100])
Hecta-triation (↑[101])
Hecta-tetration (↑[102])
Hecta-decation (↑[108])
Hecta-hendecation (↑[109])
Hecta-ennadecation (↑[117])
Hecta-icosation (↑[118])
Hecta-icosipentation (↑[123])
Hecta-triacontation (↑[128]) (this regularity is just a coincidence)
Hecta-ennaconta-ennation (↑[197])
Bihectation (↑[198])
Trihectation (↑[298])
Tetrahectation (↑[398])
Pentahectation (↑[498])
Hexahectation (↑[598])
Heptahectation (↑[698])
Octahectation (↑[798])
Ennahectation (↑[898])

Now what should we call ↑[998], the 1000th operator? Let's call it chiliation because a polygon with 1000 sides is called a chiliagon, and “chiliad” is Greek for 1000.

Chiliation (↑[998])
Chilia-ennahecta-ennaconta-ennation (↑[1997])
Bichiliation (↑[1998])
Trichiliation (↑[2998])
Tetrachiliation (↑[3998])
Pentachiliation (↑[4998])
Hexachiliation (↑[5998])
Heptachiliation (↑[6998])
You get it…

Then the 10,000th operator is going to be called myriation.

Myriation (↑[9998])
Bimyriation (↑[19,998])
Trimyriation (↑[29,998])
Ennamyria-ennachilia-ennahecta-ennaconta-ennation (↑[99,997])
Decamyriation (↑[99,998])
Hendecayriation (↑[109,998])
Icosamyriation (↑[199,998])
Icosihenamyriation (↑[209,998])
Triacontamyriation (↑[299,998])
Ennacontaennamyria-ennachilia-ennahecta-ennaconta-ennation (↑[999,997])

Now what is the 1,000,000th operator? Well in Greek, “ekatomyrio” means 1,000,000, so let's call ↑[999,998] ekatomyriation. Now we can group things by units, dekas, hectas, chiliads, myriads, and now ekatomyrios.

Then the 1,000,000,000th operator is called disekatomyriation. We can now use the names up to a septillion

ekatomyrio (1,000,000)
disekatomyrio (1,000,000,000)
trisekatomyrio (1,000,000,000,000)
tetrakisekatomyrio (1,000,000,000,000,000)
pentakisekatomyrio (1,000,000,000,000,000,000)
exakisekatomyrio (1,000,000,000,000,000,000,000)
eptakisekatomyrio (1,000,000,000,000,000,000,000,000)

Now google translate fails to translate anything higher than “septillion”, but I will modify things after trisekatomyrio to get a more extendable system:

ekatomyrio
disekatomyrio
trisekatomyrio
tetrisekatomyrio
pentisekatomyrio
hexisekatomyrio
heptisekatomyrio
octisekatomyrio
ennisekatomyrio
dekisekatomyrio

Now we run into a problem: what does, say, tetradekisekatomyrio mean? Does it mean four decillion or one quattuordecillion? This is something I am working on. But now that we have a system that can name all the operators up to dekisekatomyriation, I am done for now.

Last edited by excelguru (June 29, 2015 23:09:55)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
ev3coolexit987654
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

My first big number: Define Hn(x) to be G(Hn(x-1))*G((m)→(m↑↑↑↑↑m)→(m↑↑↑↑↑↑↑↑m)) where m is n→n↑↑↑n→n↑↑↑↑↑↑↑↑n My number if HH(G(64)(HG(G(G(140943)))(G(482946)
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

ev3coolexit987654 wrote:

My first big number: Define Hn(x) to be G(Hn(x-1))*G((m)→(m↑↑↑↑↑m)→(m↑↑↑↑↑↑↑↑m)) where m is n→n↑↑↑n→n↑↑↑↑↑↑↑↑n My number if HH(G(64)(HG(G(G(140943)))(G(482946)

Oh. It looks like this is some kind of more powerful but more complex version of my hierarchy of G-functions.

How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

Hi. I am going to extend Graham's number. First, let's have G1 be the same as G, and then we can have:

G2(n) = G(G(…(G(G(n)))…)) with n G's
G3(n) = G2(G2(…(G2(G2(n)))…)) with n G2's
G4(n) = G3(G3(…(G3(G3(n)))…)) with n G3's


And in general:

Gx(n) = Gx-1(Gx-1(…(Gx-1(Gx-1(n)))…)) with n Gx-1's

My number is f(64) where f(1) = G(64) and f(n) = Gf(n-1)(64).

sidenote: ev3coolexit987654 made a more complicated H function and defined an equally complex number with it (not like 4+3i, but you know). His function was faster than my extended G function, but my number is bigger in the end because of a clever trick. One day, I might extend G even further and create multiple numbers!

How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

SUPER DUPER ACKERMANN FUNCTION

Now I will extend the X function at the end to multiple arguments. It will have the same rules as the A function, except for X(n).

Zeriax = X() = 1 - same as zeriad
Uniax = X(1) = A(1) = 2 - same as uniad
Duliax = X(2,2) - way bigger than duliad
Triliax = X(3,3,3)


A is level 1, X is level 2, so now Y is level 3 and Z is level 4.

Zeriag = Y()
Uniag = Y(1)
Duiag = Y(2,2)
Triliag = Y(3,3,3)


Zeriaz = Z()
Uniaz = Z(1)
Duliaz = Z(2,2)
Triliaz = Z(3,3,3)


Now X turns into A2, Y turns into A3, and Z turns into A4. Here are the complete rules:

Ax() = 1
A1(a) = a+1
Ax(a) = Ax-1(a,a,…,a,a) with a a's
Ax(0,#) = Ax(#) (# stands for “the rest of the arguments” like X in chained arrows)
Ax(#,a,0,0,…,0,0) = Ax(#,a-1,1,1,…,1,1)
Ax(#,a,0,0,…,0,0,b) = Ax(#,a-1,b,b,…,b,b)
Ax(#,a,b) = Ax(#,a-1,Ax(#,a,b-1))

Now one last series of numbers:

Unial = A1(1)
Dulial = A2(2)
Trilial = A3(3)

Last edited by excelguru (June 29, 2015 20:43:26)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

Weak arrow notation

I have this notation called “weak arrow notation”. It has X's.

Rules:

# means “the rest of the operator”.

a↑b = aXb = a^b

a#1 = a

a#↑b = a#(a#↑(b-1))

a#Xb = (a#X(b-1))#a

Here are some examples:

10↑↑100
10↑X100
10↑↑↑100
10↑↑X100
10↑X↑100
10↑XX100
7353↑↑X↑↑↑X↑↑↑↑X↑XX↑↑↑↑↑65554

etc.

Last edited by excelguru (June 30, 2015 18:54:05)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

excelguru wrote:


Try and guess how I made a blank post.

Last edited by excelguru (June 29, 2015 21:06:34)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
ev3coolexit987654
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

Define N = H10^10^10^10^10^G(10^10^10^10^10^10^10^G(10^10^10^10^10^10^10^10^G(10^10^10)))G(10^10^10^10^10^G(10^10^10^10^10^10^10^G(10^10^10^10^10^10^10^10^G(10^10^10))))
My number is HN^N^N^N^N^G(N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N)))G(G(G(N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N))))))
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

How to easily make a big number:

- take a function that already exists, like Knuth's up-arrows, Conway's chained arrows, or the Ackermann function.
- make a new function out of it.
- make a number with that function.

How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
ev3coolexit987654
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

ev3coolexit987654 wrote:

Define N = H10^10^10^10^10^G(10^10^10^10^10^10^10^G(10^10^10^10^10^10^10^10^G(10^10^10)))G(10^10^10^10^10^G(10^10^10^10^10^10^10^G(10^10^10^10^10^10^10^10^G(10^10^10))))
My number is HN^N^N^N^N^G(N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N)))G(G(G(N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N))))))
That = I1
In is defined as:
N = In-1
In = HN^N^N^N^N^G(N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N)))G(G(G(N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N^N^G(N^N^N^N^N^N^N^N^N^N))))))
So H10^10^10^10^10^G(10^10^10^10^10^10^10^G(10^10^10^10^10^10^10^10^G(10^10^10)))G(10^10^10^10^10^G(10^10^10^10^10^10^10^G(10^10^10^10^10^10^10^10^G(10^10^10)))) = I0
My number is Iɪɪ₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉
That number (if you can't read it) is:
Let X = I₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉₉
Let Y = IX
My number is IY

Last edited by ev3coolexit987654 (June 30, 2015 14:36:41)

ev3coolexit987654
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

Jn= In↑↑↑↑…(In ↑'s)↑↑Jn-1. J1 = I10↑100.

Last edited by ev3coolexit987654 (June 30, 2015 15:03:07)

excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

I have an idea for up-arrows:

a↑(↑)↑b = a↑↑…↑↑a with b arrows = a{↑}b
a↑(↑)↑↑b = a{↑}↑b
a↑(↑)↑↑↑b = a{↑}↑↑b
a↑(↑)↑(↑)↑b = a↑(↑)↑↑…↑↑a with b arrows after (↑)
a↑(↑)(↑)↑b = a↑(↑)↑(↑)↑…↑(↑)↑(↑)↑a with b (↑)'s

Then there's

↑(↑)(↑)(↑)↑
↑(↑↑)↑
↑(↑↑)↑↑
↑(↑↑)↑(↑)↑
↑(↑↑)↑(↑↑)↑
↑(↑↑)(↑)↑
↑(↑↑)(↑)(↑)↑
↑(↑↑)(↑↑)↑
↑(↑↑↑)↑
↑(↑(↑)↑)↑

And so on. This brings us to ↑(↑(↑(…(↑(↑)↑)…)↑)↑)↑.

How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

TO: ev3coolexit987654

Okay, I am going to combine all of my functions:

Let N1 = 100{↑}_(100)100{↑}_(100)100 in my first extended up-arrow notation.

Let N2 = 100↑(↑(…(↑(↑)↑)…)↑)↑100 with N1 layers in my second extended up-arrow notation.

Let N3 = N1→{{…{{N2}}…}} with N1^N2 layers in my extended chained arrows.

Let N4 = f(GN1+N2*N3(37352545625)) in my extended G-function.

Let N5 = AN3(N4) in my extended Ackermann function.

My number is I(I(I(I(I(987654+N1)*N2)^N3)↑↑N4)↑↑↑N5) using your I function.

Last edited by excelguru (June 30, 2015 15:03:13)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
ev3coolexit987654
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

excelguru wrote:

TO: ev3coolexit987654

Okay, I am going to combine all of my functions:

Let N1 = 100{↑}_(100)100{↑}_(100)100 in my first extended up-arrow notation.

Let N2 = 100↑(↑(…(↑(↑)↑)…)↑)↑100 with N1 layers in my second extended up-arrow notation.

Let N3 = N1→{{…{{N2}}…}} with N1^N2 layers in my extended chained arrows.

Let N4 = f(GN1+N2*N3(37352545625)) in my extended G-function.

Let N5 = AN3(N4) in my extended Ackermann function.

My number is I(I(I(I(I(987654+N1)*N2)^N3)↑↑N4)↑↑↑N5) using your I function.
Now the number is J(I(I(I(I(I(987654+N1)*N2)^N3)↑↑N4)↑↑↑N5))
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

ev3coolexit987654 wrote:

excelguru wrote:

TO: ev3coolexit987654

Okay, I am going to combine all of my functions:

Let N1 = 100{↑}_(100)100{↑}_(100)100 in my first extended up-arrow notation.

Let N2 = 100↑(↑(…(↑(↑)↑)…)↑)↑100 with N1 layers in my second extended up-arrow notation.

Let N3 = N1→{{…{{N2}}…}} with N1^N2 layers in my extended chained arrows.

Let N4 = f(GN1+N2*N3(37352545625)) in my extended G-function.

Let N5 = AN3(N4) in my extended Ackermann function.

My number is I(I(I(I(I(987654+N1)*N2)^N3)↑↑N4)↑↑↑N5) using your I function.
Now the number is J(I(I(I(I(I(987654+N1)*N2)^N3)↑↑N4)↑↑↑N5))

Oh. I made that post before you finished the J function.

How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!
excelguru
Scratcher
1000+ posts

Graham's number (g64) and other extremely big numbers

How my second extended up arrow notation works:

After ↑(↑)↑, arrows build up to form more ↑(↑)↑'s, and eventually a long string of ↑(↑)↑'s turns into ↑(↑)(↑)↑. More (↑)'s form between until they collapse to (↑↑), and then (↑)'s and eventually (↑↑)'s form between the ↑'s. Finally the parentheses contain other parentheses.

Now the next step is to define a new type of parenthesis, that turns into (↑(↑(…(↑(↑)↑)…)↑)↑). This is ((↑)). Then after ((↑)) comes ((↑↑)), then ((↑↑↑)), then ((↑(↑)↑)), then ((↑(↑)↑↑)), then ((↑(↑)↑(↑)↑)), then ((↑(↑)(↑)↑)), then ((↑(↑↑)↑)), then ((↑(↑(↑)↑)↑)), then ((↑((↑))↑)), and we finally make it to (((↑))). Then there's ((((↑)))), (((((↑))))), and so on.

Of course we can continue with ([↑](↑)[↑]), ([↑](↑↑)[↑]), ([↑]((↑))[↑]), ([↑]([↑](↑)[↑])[↑]), ([↑][↑](↑)[↑][↑]), ([↑↑](↑)[↑↑]) - but are notations are just getting more and more complicated, so that's where I will stop.

Last edited by excelguru (June 30, 2015 15:21:40)


How to Make a Mouse Trail
Want to add a mouse trail to your Scratch projects? Try our latest tutorial!

Powered by DjangoBB