In Dino Sort, there are, uh, dinosaurs, and, well, you have to, you know, sort them out.

Play using a gamepad or the X, C, and arrow keys. PICO-8 cart available here.

Updated 15 days ago
Published 21 days ago
StatusReleased
PlatformsHTML5
Rating
Rated 4.8 out of 5 stars
(151 total ratings)
AuthorAdam Saltsman
GenrePuzzle
Made withPICO-8
TagsDinosaurs, PICO-8, Pixel Art

Development log

Comments

Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 69 · Next page · Last page
(+1)

The level transition was a good joke. Fun, short, sweet, all you could ask for from a pico-8 title.

had a hard time on 22. fun game.

That was that. One of my favorite games I've played this year. Really good puzzle design.

i love this game!

(+1)

Awesome game!

(+1)

Absolutely fantastic! Made it halfway through the Niches at work til I had to go home. No notes, awesome puzzle game. Gonna keep on it later. The only odd thing I noticed is the Brachio description - "they DO travel in herds" - is this intentionally worded as if it is not an "always" condition?

(+3)

yea its a dumbly specific Jurassic Park dialog reference  😅

Oh damn, I wish I had caught it! A fine addition to the game. 

Are there any other dinosaur media references?

it's pretty much just jurassic park 😅 all the species are featured in the move (except compsognathus, but compies pop up all the time in the book... oh and stegosaurus i guess, but stegosaurus is in the book too, anyways)

partly this is a fun way to reference a movie i like as well as a nod to the zoo sim games from Frontier (Jurassic World Evolution 1 and 2 esp), but also for people who ARENT dinosaur nerds, i have a theory that they're much more likely to recognize species from the movie which i thought might help for learning the game... hard to prove i guess!!

(+5)

Official update! Bumped up the overall quality of generated levels and put together a new daily results screen, much happier with where it's at now:

(+1)

oh my god, the silly game got sillier. (look at the little crying dinos, AGH)

The dinosaurs are so cute.  The level transition makes me laugh every time.  The pacing is fantastic.  Incredible work!

(1 edit)

Finally a game which proves that everyone can be happy. If it weren’t for those accursed asteroids!

This game is so fun!:) Also, cool dinosaurs and amazing puzzles. Did you need to think through every puzzle? Because that is impressive!:O

wow this was incredibly fun! knocked it out in less than an hour.

(+1)

For anyone who's stuck and needs a walkthrough:

[To avoid spoiling others who're just scrolling decode using ROT13]

(abgr 1: 'F': fgrtbfnhehf, 'O': oenpuvbfnhehf, 'G': glenaabfnhehf, 'I': irybpvencgbe, 'T': tnyyvzvzhf, 'B': pbzcfbtanguhf, 'Q': qvabfnhe rtt, 'R': rzcgl gvyr, 'P': plpnq, '-': fgbar) 

(abgr 2: sbe zbfg Avpurf guvf vf bar bs znal pbasvthengvbaf gung jbex)

NICHE 1:

- - - - - - Ebj

 - F R R R - 1

- F R R P - 2

- - - - - - 3

• Ebj 1: F 3 evtug

• Ebj 2: F 2 evtug

NICHE 2:

- - - - - - Ebj

 - R R O P - 1

- O R R R - 2

- R R R O - 3

- P O R R - 4

- - - - - -

• Ebj 1: O 1 qbja

• Ebj 2: yrsg O 1 evtug

• Ebj 3: O 1 yrsg

• Ebj 4 O 1 hc

NICHE 3:

- - - - - - Ebj

 - O R G O - 1

- R O P O - 2

- - - - - -

• Ebj 2: yrsg O 1 yrsg

• Ebj 1: G 1 yrsg, 1 qbja

• Ebj 1: evtug O 2 yrsg

• Ebj 2: evtug O 1 hc, 1 yrsg

NICHE 4:

- - - - - - Ebj

 - G G R R - 1

- P - R R - 2

- R - - R - 3

- F F R R - 4

- - - - - -

• Ebj 4: yrsg F 1 hc

• Ebj 1: evtug G 1 evtug, 1 qbja

• Ebj 4: F 2 evtug, 3 hc

• Ebj 2: G 1 evtug

• Ebj 1: G 2 evtug, 1 qbja

• Ebj 1: F 3 yrsg

• Ebj 2: yrsg G 1 hc, 1 yrsg

• Ebj 2: G 2 qbja, 3 yrsg

NICHE 5:

- - - - - - Ebj

 - R R O P - 1

- O R R O - 2

- - R R - - 3

- R R O I - 4

- - - - - -

• Ebj 1: O 1 yrsg

• Ebj 4: O 1 yrsg, 2 hc

• Ebj 4: R 1 yrsg, 3 hc

• Ebj 2: evtug O 1 yrsg

NICHE 6:

- - - - - - Ebj

 - F R F F - 1

- R P R - - 2

- P - R P - 3

- I F R F - 4

- - - - - -

• Ebj 4: yrsg F 1 evtug, 2 hc

• Ebj 4: R 2 evtug, 1 hc

• Ebj 4: F 3 yrsg

• Ebj 3: R 1 qbja, 1 yrsg

• Ebj 2: F 2 qbja, 1 evtug

• Ebj 1: zvqqyr F 1 qbja

• Ebj 4: R 1 evtug, 1 hc

• Ebj 1: yrsg F 1 qbja

• Ebj 1 evtug F 2 yrsg

NICHE 7:

- - - - - - Ebj

 - F - - T - 1

- R T R G - 2

- T R R T - 3

- R T P R - 4

- - - - - -

• Ebj 3: yrsg T 1 qbja

• Ebj 2: T 1 qbja, 1 yrsg

• Ebj 3: evtug T 2 yrsg

• Ebj 1: F 1 qbja, 2 evtug, 1 qbja

• Ebj 2: G 1 qbja

• Ebj 1: T 1 qbja, 2 yrsg

NICHE 8:

- - - - - - Ebj

 - - R R P - 1

- P O T - - 2

- O G G T - 3

- P O T - - 4

- - - - - -

• Ebj 2: O 1 hc, 1 evtug

• Ebj 3: yrg G 2 hc

• Ebj 3: yrsg O 1 evtug, 1 hc

• Ebj 3: G 2 yrsg

• Ebj 2; T 1 qbja

• Ebj 2: O 1 qbja

• Ebj 1: O 1 qbja, 1 yrsg

NICHE 9:

- - - - Ebj

 - B I - 1

- R P - 2

- I R - 3

- P B - 4

- - - -

• Ebj 3: R 1 evtug

• Ebj 1: B 2 qbja

• Ebj 1: R 1 yrsg, 1 qbja

NICHE 1O:

- - - - - - Ebj

 - R B G B - 1

- R - - G - 2

- G R P R - 3

- B R G B - 4

- - - - - -

• Ebj 4: evtug B 1 hc

• Ebj 4 G 1 evtug

• Ebj 4: B 2 evtug

• Ebj 3: G 1 qbja, 1 evtug

• Ebj 1: yrsg B 1 yrsg, 2 qbja, 1 evtug

• Ebj 1: G 2 yrsg, 2 qbja

• Ebj 1: B 1 yrsg

NICHE 11:

- - - - - - - - Ebj

 - R R R G R - - 1

- F - - G B P - 2

- I - - G B P - 3

- R R R R R - - 4

- - - - - - - -

• Ebj 3: R 1 qbja, 4 evtug, 

• Ebj 3: G 1 qbja

• Ebj 2: G 1 qbja

• Ebj 1: G 1 evtug

• Ebj 2: F: 1 hc, 3 evtug, 1 qbja

• Ebj 1: G 4 yrsg, 3 qbja, 2 evtug

• Ebj 2: B 1 hc, 2 yrsg

• Ebj 2: F 1 evtug

• Ebj 3: G 2 hc, 1 evtug

• Ebj 4: evtug G: 3 hc

• Ebj 4: G 1 evtug, 2 hc, 

• Ebj 3: B 1 yrsg, 1 qbja, 1 yrsg

• Ebj 4: R 1 hc

• Ebj 2: G 2 qbja, 1 evtug, 

• Ebj 1: yrsg G 1 qbja

NICHE 12:

- - - - - - - - Ebj

 - R P R T P R - 1

- F F T R G G - 2

- F F R T G G - 3

- R P T R P R - 4

- - - - - - - -

• Ebj 2: T 1 qbja 

• Ebj 3: T 1 qbja 

• Ebj 1, T 2 qbja

• Ebj 3: yrsg F 1 qbja

• Ebj 2: yrsg F 1 hc 

• Ebj 2: F 1 evtug, 1 hc 

• Ebj 2: yrsg G 1 yrsg, 1 hc 

• Ebj 2: G 5 yrsg

• Ebj 3: yrsg G 1 hc, 1 evtug 

• Ebj 3: F 1 hc, 3 evtug, 1 qbja

• Ebj 2: evtug G 1 yrsg

NICHE 13:

- - - - - - Ebj

 - R R R R - 1

- R Q Q R - 2

- R Q Q R - 3

- O O O O - 4

- - - - - -

• Ebj 2: yrsg Q 1 yrsg

• Ebj 2: Q 1 evtug

• Ebj 3: obgu Q'f 1 hc

NICHE 14:

- - - - - - Ebj

 - P R R P - 1

- B T T T - 2

- Q B T T - 3

- Q P P Q - 4

- - - - - -

• Ebj 2: zvqqyr T: 1 hc, 1 yrsg

• Ebj 2: evtug T: 1 yrsg, 1 hc

• Ebj 3: evtug T: 1 hc, 1 yrsg

• Ebj 4: evtug Q: 2 hc

• Ebj 3: T 1 evtug, 1 qbja

• Ebj 2: evtug T: 1 qbja, 1 evtug

• Ebj 2: T: 1 evtug, 1 qbja

• Ebj 2: Q 2 yrsg

• Ebj 1: evtug T 1 qbja, 1 evtug

• Ebj 1: T 1 evtug

• Ebj 2: Q 1 hc

• Ebj 2: B 2 evtug

• Ebj 1: Q 1 qbja 1 evtug

• Ebj 2: B 1 yrsg, 1 hc

• Ebj 1: T 1 qbja

• Ebj 1: B 1 evtug

• Ebj 3: B 2 hc

NICHE 15:

- - - - - - Ebj

 - O O R P - 1

- O G G R - 2

- R G G O - 3

- P R G O - 4

- - - - - -

• Ebj 3: yrsg G 1 qbja

• Ebj 2: evtug G 1 hc

• Ebj 3: G 1 hc, 1 evtug

• Ebj 2: yrsg G 1 qbja, 1 yrsg 

• Ebj 2: O 2 evtug

• Ebj 4: yrsg G 1 hc

• Ebj 3: O 1 yrsg

• Ebj 4: O 1 hc

• Ebj 1: yrsg O 1 qbja, 1 evtug

• Ebj 3: yrsg G 1 hc

NICHE 16:

- - - - - - Ebj

 - I I R R - 1

- I T T R - 2

- R T P P - 3

- R Q P P - 4

- - - - - -

• Ebj 2: evtug G: 1 hc, 1 evtug

• Ebj 1: evtug R: 1 evtug, 1 qbja, 1 evtug

• Ebj 1: R: 2 evtug, 1 qbja

• Ebj 2: yrsg R: 1 hc, 2 evtug

• Ebj 4: Q 1 yrsg, 3 hc

• Ebj 2: G 1 yrsg

• Ebj 3: G 1 yrsg

• Ebj 1: R 1 yrsg, 3 qbja

• Ebj 3: G 1 qbja

• Ebj 2: G 1 evtug

NICHE 17:

- - - - - - - - Ebj

 - P O R R R R - 1

- O O R R I R - 2

- O O R R I R - 3

- R R R R - P - 4

- - - - - - - -

• Ebj 1: B: 1 right, 3 down, 2 left

• Ebj 2: right B: 1 right, 2 down, 1 left

• Ebj 2: B: 2 right, 1 down

• Ebj 2: I: 4 left

• Ebj 3: I 2 up, 3 left

• Ebj 3: right B: 1 up, 1 left

NICHE 18:

- - - - - - - - Ebj

 - T T T R F F - 1

- - T P P R R - 2

- R T P P R - - 3

- T T T R F F - 4

- - - - - - - -

• Ebj 4: yrsg F: 1 yrsg

• Ebj 1: yrsg F: 1 qbja, 1 evtug

• Ebj 1: evtug T: 2 evtug, 3 qbja

• Ebj 1: evtug T: 3 evtug, 2 qbja

• Ebj 1: T: 4 evtug, 1 qbja

• Ebj 3: yrsg T: 1 yrsg

• Ebj 2: yrsg T 1 qbja

• Ebj 1: F 4 yrsg, 1 qbja

• Ebj 2: F: 1 hc, 3 yrsg

• Ebj 2: T 1 hc

• Ebj 3: evtug T: 1 hc, 1 evtug, 1 hc

• Ebj 4 evtug T: 2 hc

• Ebj 4, evtug F: 1 yrsg, 1 hc

NICHE 19:

- - - - - - Ebj

 - Q R B B - 1

- Q R P B - 2

- Q R F F - 3

- Q R F F - 4

- - - - - -

• Ebj 3: yrsg F: 1 yrsg, 2 hc

• Ebj 3: F 2 yrsg, 1 hc

• Ebj 2: B: 1 qbja, 2 yrsg, 1 qbja

• Ebj 1: evtug B: 2 qbja, 2 yrsg

• Ebj 1: B: 1 evtug

• Ebj 1: F 1 evtug

• Ebj 4: yrsg F: 1 hc

• Ebj 4: F 2 hc

• Ebj 4 B: 2 evtug, 1 hc

• Ebj 3: yrsg B: 1 qbja, 2 evtug

• Ebj 3: Q 1 evtug, 1 qbja

• Ebj 2: Q 1 qbja

NICHE 20:

- - - - - - - - Ebj

 - P R R R P P - 1

- I I - R R B - 2

- I I - - R B - 3

- P P R R R P - 4

- - - - - - - -

• Ebj 2: evtug I: 1 hc, 2 evtug, 1 qbja, 1 evtug, 2 qbja, 2 yrsg

• Ebj 3: evtug I: 2 hc, 2 evtug, 1 qbja, 1 evtug, 2 qbja, 1 yrsg

• Ebj 3: I: 1 evtug, 2 hc, 2 evtug, 1 qbja, 1 evtug, 2 qbja

• Ebj 3: B: 1 yrsg, 1 hc, 1 yrsg, 1 hc, 2 yrsg, 2 qbja, 1 yrsg

• Ebj 4: evtug I: 2 hc, 1 yrsg, 1 hc, 2 yrsg, 2 qbja

• Ebj 4: evtug I: 1 evtug, 2 hc

• Ebj 4: I: 2 evtug, 1 hc, 1 evtug

NICHE 21:

- - - - - - Ebj

 - Q R G G - 1

- Q R G G - 2

- R P R R - 3

- B B B B - 4

- - - - - -

• Ebj 2: Q: 1 evtug, 1 hc

• Ebj 2: yrsg G: 2 yrsg, 1 qbja

• Ebj 4: Guveq B sebz gur yrsg: 2 hc, 2 yrsg

• Ebj 2 G: 2 yrsg

• Ebj 4: zvqqyr B: 1 evtug, 1 hc

• Ebj 4: yrsg B: 1 evtug

• Ebj 3: G 1 qbja

• Ebj 2: B 1 qbja

• Ebj 2: G 1 yrsg

• Ebj 4: evtug B: 2 hc, 2 yrsg

• Ebj 1: yrsg G, 1 qbja

• Ebj 1: G 3 qbja, 1 yrsg

• Ebj 1: evtug Q: 2 evtug, 1 qbja

• Ebj 1: Q: 3 evtug

• Ebj 2: evtug G: 1 hc, 1 yrsg

NICHE 22:

- - - - - - Ebj

 - R G G R - 1

- O O O O - 2

- T T T T - 3

- R G G R - 4

- - - - - -

• Ebj 1: evtug G: 1 evtug

• Ebj 2: 3eq O sebz yrsg, 1 hc

• Ebj 2: zvqqyr O 1 evtug

• Ebj 1: yrsg G 1 yrsg

• Ebj 2: yrsg O 1 evtug, 1 hc

• Ebj 3: yrsg T 1 qbja

• Ebj 3: yrsg T 1 yrsg

• Ebj 4: yrsg G 2 hc

• Ebj 3: zvqqyr T 1 yrsg, 1 qbja

• Ebj 4: G 1 hc

• Ebj 3: evtug T 1 qbja, 1 yrsg

• Ebj 3: G 1 evtug

NICHE 23:

- - - - - - - - Ebj

 - P P P P - R - 1

- I P R R F F - 2

- I I R R F F - 3

- P I P P - R - 4

- - - - - - - -

• Ebj 3: evtug F: 1 qbja

• Ebj 2: evtug F 1 qbja

• Ebj 2: F 1 evtug

• Ebj 3: evtug I: 2 evtug, 1 hc, 1 evtug

• Ebj 3: I: 3 evtug, 1 hc

• Ebj 2: yrsg I: 1 qbja, 2 evtug, 1 hc

• Ebj 3: yrsg F: 4 evtug, 1 hc

• Ebj 2: yrsg I: 1 qbja, 2 yrsg

• Ebj 3: F: 4 yrsg

• Ebj 4: F: 1 hc, 3 yrsg, 1 hc

• Ebj 2: evtug I: 1 qbja, 2 yrsg

• Ebj 2: evtug F: 1 qbja, 2 yrsg

NICHE 24:

- - - - - - - - Ebj

 - Q Q R R Q Q - 1

- Q Q T T Q Q - 2

- Q Q T T Q Q - 3

- Q Q R R Q Q - 4

- - - - - - - -

• Ebj 4: 3eq Q sebz yrsg: 2 yrsg

• Ebj 4: evtug Q: 2 yrsg

• Ebj 3: Q 3 naq 4 sebz yrsg: 1 qbja

• Ebj 2: obgu T'f 1 hc

• Ebj 3: obgu T'f 1 hc

• Ebj 2: Q 3eq sebz yrsg: 1 qbja, 2 yrsg

• Ebj 2: evtug Q: 1 qbja, 2 yrsg

• Ebj 1: 3eq naq 4gu Q sebz yrsg: 2 qbja

• Ebj 1: evtug T: 2 evtug

• Ebj 1: yrsg T 2 evtug

• Ebj 2: evtug T: 2 evtug

• Ebj 2: yrsg T 2 evtug

• Ebj 3: 4gu Q sebz yrsg, 2 hc, 1 yrsg

• Ebj 3: 4gu Q sebz yrsg: 1 yrsg, 1 hc, 1 yrsg

• Ebj 3: evtug Q, 2 yrsg

NICHE 25:

- - - - - - Ebj

 - O O R P - 1

- F R Q P - 2

- F R Q P - 3

- O O R P - 4

- - - - - -

• Ebj 1: evtug O: 2 qbja

• Ebj 1: O 1 evtug, 1 qbja

• Ebj 2: Q 1 hc, 2 yrsg

• Ebj 3: Q 2 hc, 1 yrsg

• Ebj 4: evtug O: 1 evtug, 2 hc

• Ebj 4: O: 2 evtug 1 hc

• Ebj 3: F 1 qbja, 2 evtug

• Ebj 3: yrsg O: 1 qbja

• Ebj 2: yrsg O; 1 qbja

• Ebj 2: F 1 evtug

• Ebj 1: yrsg Q: 3 qbja

• Ebj 1: Q: 1 yrsg

• Ebj 2: F 1 hc, 1 evtug

• Ebj 3: yrsg O 1 hc

• Ebj 4: O 1 hc

NICHE 26:

- - - - - - - - Ebj

 - O O O O O P - 1

- R R B B R R - 2

- R G G G G R - 3

- P G G G G R - 4

- - - - - - - -

• Ebj 2: yrsg B: 2 yrsg, 1 qbja

• Ebj 2: B 2 evtug

• Ebj 3: evtug G: 1 evtug, 1 qbja

• Ebj 3: evtug G: 2 evtug

• Ebj 1: evtug O: 2 qbja, 1 yrsg

• Ebj 1: evtug O: 1 qbja

• Ebj 3: evtug G: 1 yrsg, 2 hc, 1 yrsg

• Ebj 4: evtug G: 1 hc 

• Ebj 4: evtug G: 2 hc

• Ebj 4: evtug G: 2 evtug 

• Ebj 3: O: 1 qbja

• Ebj 2: O: 1 qbja

• Ebj 3: yrsg G: 1 hc, 1 yrsg

• Ebj 1: evtug O: 1 qbja, 1 evtug

• Ebj 1: evtug O: 1 evtug 1 qbja

• Ebj 4: yrsg G: 3 hc, 1 evtug

• Ebj 1: O: 1 evtug, 1 qbja

• Ebj 1: yrsg G: 1 yrsg

• Ebj 3: yrsg G: 1 yrsg

• Ebj 4: evtug G 1 yrsg

why did i translate it myself? sometimes i question my sanity.

(+3)(-1)

Awesome game. Just a quick idea: When an egg is in a wrong place, there could be some crack on in to emphasize that it is not correct.

(+2)

oooh that's a v cute idea, i obv never figured out how to add a crying effect to them 😅

(+2)

i like dinosaurs + puzzles 10/10.

Fun small game, short, easy levels that still feel good to solve. ^w^

(+1)

super fun game that i was able to beat on a 15 min break. there's something poetic about doing all that work just to see it explode before your eyes. 

Adam, fun! Also dinosaurs.

aww thanks! and yes, finally 🦕

(+2)

Went "oh nooooo" after beating the first level, then cackled at the conclusion of beating all of the levels.

yes

adorable (also is Adam is in his tile-based era?!)

(+1)

he is

(1 edit)

great game, really fun!

It's neat :3

A fun and charming puzzler!

Fantastic! Interesting, challenging logic and fun theme

10/10 this game is actively curing my seasonal depression

Cool game. 

Very Fun!

(+3)

Lols.
Meteor to end the level is just so slapstick.

(-8)

This game just sucks to play, I can't bring myself to care about the dinos long enough to solve the puzzle when I know they will be destroyed after the level is done, and the meteor impact sound is just grating. Good puzzles, horrible flavor choices 

(+1)

im CRACKED at this game

(+1)

Nic(h)e game :)

love it! stuck on the last level lol but overall really fun :)

really fun! I completed all 26!

such a fun mechanic game, loved it!

(+1)

Has dinosaurs, makes me feel smort, 10/10

22 is so unnecessarily hard, still beat it tho, very fun and easy to understand

great game got until 10

(+1)

Let me know when the walkthroughs are on YouTube. I'm stuck on niche 10.

(-2)

Git gud

(+4)

Cool little game, managed to get through all the niches. I'm not sure I agree with other comments about the dinosaurs being able to move through each other as I feel like part of the puzzle is figuring out how to get them all into the right positions.

(+5)

thank you!

yea i think that friction is important - its nice to like scoot around (no pun) the focus from puzzle to puzzle to keep some freshness

the real thing it adds i think is not annoying 16-puzzle grinding loops but hopefully a more Rush Hour style like... procedurality, in terms of like... oh ok in order to execute this arrangement, i need to do X, then Y, then Z... but having a little looseness in that too, i think pure sokoban and even rush hour are a little strict for my taste

idk - i do totally think there are other interesting ways that friction could have been introduced, but the sliding tile method i chose is not without its merits either, even if they're not obvious (even to me sometimes)

(+2)

Great job!
Puzzles felt rewarding even if on the easier side (I still felt smart beating them). The solved board also looked aesthetically pleasing, like that feeling you get looking at a finished jigsaw puzzle.

You nailed the sound effects and fanfare of the meteor falling down and turning everything into bones, very satisfying to see.

For the "infinite" puzzles how do you generate them? Do you have a bank of solved boards that you shuffle up each generation or are you able to generate a random board and make sure it is solvable before the players see it? 

(+2)

thank you!

yes for the generated puzzles, it's random and solvable... it basically places some rocks, and then takes a bunch of tries at putting some by-definition-winning placements... e.g. if its trying to add some tyrannosaurs, it picks a random coordinate and then checks if that coordinate has a prey species for a neighbor AND no other tyrannosaurs nearby. so that but for all species, at random

if the result is too mono-flavor, too dense, or too sparse, then it discards the whole thing and starts over. once it has a layout with enough flavors, then it "unsolves" it with a ton of procedural shuffles. if the result is still basically solved, then it discards the whole thing and starts over. dumb but reasonably effective!

"Unsolving" - clever trick.
Loved the game, I'll run this by my children, being on the easier side. Might get them into puzzle games.
Also loved the comet of death, it cracked me up every time. Bravo!

I suppose I should say I didn't like it just to be different, but that was quite enjoyable.  Easy to navigate, the graphics were great, and just enough challenge to feel like you accomplished something progressing through each level.  Well done!

Viewing most recent comments 1 to 40 of 69 · Next page · Last page