NULL

NULL is a programming language in zero dimensions. Programs in it are single positive integers of arbitrarily large size.

Runtime environment

The environment available to a NULL program consists of three queues of bytes, initially empty, and two arbitrarily large integer variables, x and y. x is set to the program, while y is set to 1.

Then x is divided by its smallest prime factor, y is multiplied by the same, and the instruction corresponding to the prime factor is executed.

Instructions

 2 Select the next queue (wrapping around). Select the previous queue (wrapping around). Output the byte at the front of the selected queue (NUL if the queue is empty). NUL is '\0' (ASCII character 0). Input one byte and replace the value at the front of the selected queue with it; or, if the selected queue is empty, enqueue the value there. It is currently undefined what to do when EOF has been reached. Subtract the byte at the front of the selected queue (0 if the queue is empty) from y. If this makes y less than zero, y is set to 0. Add the byte at the front of the selected queue (0 if the queue is empty) to y. Add y mod 256 to the byte at the front of the selected queue, or enqueue y mod 256 there if the queue is empty. Remove the byte at the front of the selected queue (use 0 if the queue is empty) and enqueue it to the rear of the next queue (wrapping around). Remove the byte at the front of the selected queue (use 0 if the queue is empty) and enqueue it to the rear of the previous queue (wrapping around). Remove the byte at the front of the selected queue. Enqueue y mod 256 at the end of the selected queue. If the selected queue is empty or the byte at the front of it has a value of 0, divide x by its smallest prime factor and multiply y by that number. Switch the values of x and y. End the program.

The instructions loop for every 14th prime number, meaning, for instance, 47 is equivalent to 2.

Examples

Hello, world!

This 199-digit number prints the words Hello, world!.

```50056520978563208516819797718881283032143646116073595166114838703987562227081772
27277884468665934749909633552472002670467760272184148189288786549011066838407636
978909259289001144030816758344442315793
```

Cat program

This 5-digit number is a cat program. Note that its behaviour on end of file is undefined.

```42539
```