(02-19-2018 03:31 AM)Garth Wilson Wrote: [ -> ]The HP-71 does what I think you're looking for. Files reside in RAM (not flash or EEPROM), and can be expanded or contracted easily, and it's pretty transparent from the user's perspective.
Yes exactly, thanks for the info.
Anyway some limitations on my side: no 71B (and no budget for it), the ram in the 50g is already of the same size, and no "modern" connection with a computer as far as I know.
Anyway the concept is exactly that, more or less.
(02-23-2018 10:09 PM)Claudio L. Wrote: [ -> ]I think you want some kind of virtual memory management. With VMM you CAN have the whole thing in RAM, or at least you think you do, while the operating system swaps data to disk in/out as you use your data.
Yes, thanks for finding the technical term. Also thanks for your post in general.
Quote:You should probably start thinking of your "paging" solution before you run out of space.
Yes for the info that I got so far, yes. In my case performance is not that of an hassle . As long as I can store the data in the object within 30 seconds. I am willing to wait 30seconds, other people maybe not.
If I understood correctly newRPL has a sort of virtual memory management, or anyway I can work on the data that is directly stored on the SD card without being completely recalled in ram, right?
And sure also the format is important, as in every case the solution has to fit the available resources (deadline, time, skill, willpower, hardware, etc.).
I guess I will slowly refactor from using a directory of list on the RAM, to a directory of incremental lists on the SD card, with the last increment in ram. Similar to what Claudio suggested.
String & co would be maybe better (see space optimization) but then the helper routines may grow larger and I am not sure whether I will have the time to maintain them every time I find a bug.
For example my data collection started in June 2017 (I mentioned it sometimes in other topics) and the directory was like 2-3kb. I predicted 80-100 bytes more every day, but my prediction is not really holding, or better it is more complicated.
For the moment I collected in every category about 250 points. The directory (included backup routines, that changed over time as I fixed them) is 22 kilobytes.
The average is 88 bytes added per day but actually the data added recently is bigger than before because I added some new categories.
The helper routines for the moment require at least 2 times the space free to be sure that no conflicts arise (because the code is not extra refined). So I need in total 66kb.
So trying to overestimate (but not too much), with 250 bytes added per day, I will have 113 kb at the end of the year and then game over, since I have around 200 kb of ram free for this task. Therefore I asked about calculators with this sort of "transparent" storage.
If I use an optimized format like strings, I may delay the problem but then it will happen eventually.
I guess I need to start to do the paging solution, to keep the data in ram under 30kb.
I also thought to just save the data on the pc every now and then and reset the counters on the 50g, but in theory I'd like to analyze the data on the 50g itself too, so while I backup it on the pc, I don't want to move it from the calculator.
Another thing I discovered is that the backup on the SD card, in form of HPDIR, is not easy to read on the pc. So I need to convert all the full backups of the directory (one for every day, so I have 250 of them) in string format to be able to read them easily on the pc.
the data is like the following (yes somewhere I stored integers instead of reals, I was in the wrong mode). I'll convert them eventually
(code makes the panel too long on the horizontal axis :/ )
Quote:{ 8.062017 9.062017 10.062017 11.062017 12.062017 13.062017 14.062017 15.062017 16.062017 17.062017 18.062017 19.062017 20.062017 21.062017 22.062017 23.062017 24.062017 25.062017 26.062017 27.062017 28.062017 29.062017 30.062017 1.072017 2.072017 3.072017 4.072017 5.072017 6.072017 7.072017 8.072017 9.072017 10.07207 11.072017 12.07207 13.072017 14.072017 15.072017 16.072017 17.072017 18.072017 19.072017 20.072017 21.072017 22.072017 23.072017 24.072017 25.072017 26.072017 27.072017 28.072017 29.072017 30.072017 31.072017 1.082017 2.082017 3.082017 4.082017 5.082017 6.082017 7.082017 8.082017 9.082017 10.082017 11.082017 12.072018 13.082017 14.082017 15.082017 16.082017 17.082017 18.082017 19.082017 20.082017 21.082017 22.082017 23.082017 24.082017 25.082017 26.082017 27.082017 28.082017 29.082017 30.082017 31.082017 1.092017 2.092017 3.092017 4.092017 5.092017 6.092017 7.092017 8.092017 9.082017 10.092017 11.092017 12.092017 13.092017 14.092017 15.092017 16.092017 17.092017 18.092017 19.092017 20.092017 21.092017 22.092017 23.092017 24.092017 25.092017 26.092017 27.092017 28.092017 29.072017 30.092017 1.102017 2.102017 3.102017 4.102017 5.102017 6.102017 7.102017 8.102017 9.102017 10.102017 11.102017 12.102017 13.10217 14.102017 15.102017 16.102017 17.102017 18.102017 19.102017 20.102017 21.102017 22.102017 23.102017 24.102017 25.102017 26.102017 27.102017 28.102017 29.102017 30.102017 31.102017 1.112017 2.112017 3.112017 4.112017 5.112017 6.112017 7.112017 8.112017 9.112017 10.112017 11.112017 12.112017 13.112017 14.112017 15.112017 16.112017 17.112017 18.112017 19.112017 20.112017 21.112017 22.112017 23.112017 24.112017 25.112017 26.112017 27.112017 28.112017 29.112017 30.112017 1.122017 2.122017 3.122017 4.122017 5.122017 6.122017 7.122017 8.122017 9.122017 10.122017 11.122017 12.122017 13.122017 14.122017 15.122017 16.122017 17.122017 18.122017 19.122017 20.122017 21.122017 22.122017 23.122017 24.122017 25.122017 26.122017 27.122017 28.122017 29.122017 30.122017 31.122017 1.012018 2.012018 3.012018 4.012018 5.012018 6.012018 7.012018 8.012018 9.012018 10.012018 11.012018 12.012018 13.012018 14.012018 15.012018 16.012018 17.012018 18.012018 19.012018 20.012018 21.012018 22.012018 23.012018 24.012018 25.012018 26.012018 27.012018 28.012018 29.012018 30.012018 31.012018 1.022018 2.022018 3.022018 4.022018 5.022018 6.022018 7.022018 8.022018 9.022018 10.022018 11.022018 12.022018 13.022018 14.022018 15.022018 16.022018 17.022018 18.022018 19.022018 }
{ 2. 4. 5. 5. 5. 5. 6. 6. 4. 5. 6. 6. 5. 5. 5. 6. 6. 6. 4. 5. 5. 5. 4. 5. 3. 5. 4. 6. 5. 6. 4. 2. 3. 2. 3. 4. 5. 6. 5. 4. 5. 4. 4. 3. 2. 2. 4. 4. 5. 4. 5. 5. 4. 6. 7. 6. 4. 4. 5. 5. 4. 5. 5. 4. 5. 6. 5. 5. 5. 5. 5. 5. 6. 5. 6. 6. 6. 6. 6. 5. 6. 6. 5. 5. 5. 6. 6. 4. 4. 5. 6. 6. 5. 5. 5. 5. 5. 6. 6. 4. 7. 4. 5. 5. 5. 6. 7. 4. 4. 3. 4. 5. 2. 4. 2. 4. 4. 4. 5. 5. 5. 5. 5. 5. 5. 6. 6. 2. 2. 4. 4. 5. 4. 5. 5. 5. 5. 5. 5. 4. 4. 4. 4. 5. 6. 6. 4. 2. 6. 4. 3. 5. 5. 6. 6. 6. 6. 5. 6. 5. 5. 5. 4. 4. 4. 4. 4. 5. 5. 3. 4. 5. 4. 4. 5. 6. 5. 4. 3. 4. 4. 4. 3. 5. 6. 5. 4. 3. 5. 5. 6. 6. 6. 6. 5. 5. 5. 3. 3. 5. 6. 6. 5. 5. 4. 5. 4. 5. 5. 3. 3. 5. 5. 4. 3. 3. 5. 5. 4. 4. 5. 5. 4. 5. 5. 5. 1. 1. 4. 5. 4. 5. 5. 6. 6. 6. 6. 6. 4. 6. 6. 6. 5. 6. 6. 5. 6. 6. 4. 5. 6. 4. 5. 5. 5. 6. 6. }
{ 3. 3. 3. 2. 3. 3. 4. 3. 3. 3. 3. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 3. 3. 4. 4. 4. 3. 3. 3. 3. 3. 4. 3. 4. 3. 4. 3. 4. 3. 4. 4. 3. 4. 4. 4. 4. 3. 4. 3. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 3. 4. 3. 4. 4. 4. 3. 2. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 2. 3. 4. 4. 4. 4. 3. 4. 4. 4. 3. 4. 3. 4. 3. 4. 4. 4. 4. 4. 4. 3. 3. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 3. 3. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 3. 4. 4. 4. 4. 3. 4. 4. 2. 3. 3. 2. 3. 3. 3. 2. 4. 3. 3. 3. 4. 3. 4. 4. 4. 4. 4. 3. 3. 4. 4. 3. 4. 4. 3. 3. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 3. 3. 3. 4. 3. 3. 3. 4. 3. 4. 3. 4. 3. 4. 3. 4. 3. 2. 4. 3. 3. 3. 4. 2. 3. 4. 3. 3. 3. 3. 2. 1. 4. 3. 3. 4. 3. 2. 4. 3. 3. 2. 4. 3. 3. 3. 4. }
{ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 4. 4. 1. 1. 1. 1. 1. 4. 4. 1. 1. 1. 1. 1. 3. 4. 2. 2. 2. 1. 2. 4. 4. 1. 2. 2. 2. 2. 3. 3. 1. 3. 1. 1. 1. 3. 4. 2. }
{ 0. 0. 2. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 2. 2. 3. 3. 2. 3. 2. 3. 3. 2. 3. 3. 2. 3. 2. 3. 3. 2. 3. 3. 2. 3. 3. 3. 3. 3. 3. 3. 2. 3. 3. 3. 3. 2. 2. 2. 1. 3. 3. 3. 3. 3. 3. 3. 3. 2. 2. 1. 2. 2. 2. 2. 3. 3. 3. 2. 3. 3. 3. 3. 3. 3. 2. 2. 2. 3. 2. 2. 3. 3. 2. 3. 3. 3. 2. 2. 2. 2. 2. 2. 3. 3. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 2. 3. 3. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 3. 3. 3. 3. 3. 3. 3. 3. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 3. 2. 3. 3. 3. 3. 4. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 2. }
{ 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 3. 3. 4. 3. 4. 4. 4. 4. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 3. 3. 3. 3. 4. 4. 3. 3. 3. 3. 3. 3. 3. 4. 3. 3. 3. 3. 3. 4. 3. 4. 4. 3. 3. 3. 2. 3. 3. 3. 3. 4. 4. 4. 3. 4. 3. 3. 4. 4. 4. 4. 4. 4. 3. 3. 4. 4. 3. 4. 3. 3. 4. 4. 4. 3. 4. 4. 4. 3. 4. 3. 4. 3. 3. 4. 3. 2. 3. 3. 3. 3. 4. 4. 3. 4. 3. 3. 3. 4. 3. 3. 4. 4. 4. 4. 3. 4. 3. 3. 4. 3. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 3. 4. 4. 4. 3. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 3. 3. 3. 3. 3. 4. 4. 4. 3. 3. 3. 3. 3. 4. 3. 4. 3. 3. 3. 3. 4. 4. 3. 3. 4. 4. 3. 4. 4. 3. 2. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 3. 3. 4. 4. 3. 3. 3. 4. 3. 3. 3. 3. 3. 4. 3. 3. 3. 4. 4. 4. 3. 2. 3. 3. 3. 3. 3. 4. 4. 4. 4. 3. 4. 3. 4. 4. 3. 3. 3. 4. 3. 2. 4. 3. 4. 2. 3. 3. 4. 3. 2. }
{ 0. 0. 0. 0. 0. 2. 3. 3. 3. 3. 3. 4. 3. 3. 3. 4. 3. 3. 4. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 3. 0. 4. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 4. 3. 3. 4. 4. 3. 4. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 3. 3. 3. 3. 3. 3. 3. 4. 3. 3. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 3. 4. 3. 4. 4. 4. 3. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 3. 4. 4. 4. 4. 3. 3. 3. 3. 3. 4. 4. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 4. 3. 3. 3. 3. 3. 4. 3. 3. 3. 4. 4. 3. 4. 3. 4. 3. 3. 3. 3. 3. 3. 3. 4. 3. 3. 4. 3. 3. 3. 3. 3. 3. 4. 3. 3. 3. 3. 3. 3. 4. 3. 3. 3. 3. 3. 3. 4. 4. 3. 3. 4. 3. 3. 3. 4. 4. 4. 4. 4. 3. 3. 3. 3. 4. 4. 3. 3. 4. 3. 2. 2. 2. 4. 4. 2. 4. 3. 3. 3. 2. 2. 3. 3. 3. 3. }
{ 0. 0. 0. 0. 0. 3. 2. 3. 2. 3. 2. 3. 3. 3. 3. 2. 2. 2. 2. 3. 3. 2. 2. 2. 3. 2. 2. 3. 2. 2. 3. 3. 2. 2. 2. 2. 2. 3. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 2. 0. 2. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 3. 3. 3. 3. 3. 2. 3. 3. 3. 2. 3. 3. 2. 2. 3. 2. 1. 3. 3. 3. 3. 3. 3. 2. 2. 2. 1. 1. 3. 2. 1. 1. 2. 1. 3. 1. 2. 3. 3. 2. 2. 2. 3. 3. 3. 3. 1. 3. 2. 3. 3. 2. 3. 3. 2. 2. 2. 2. 1. 2. 3. 2. 3. 3. 3. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 1. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. }
{ 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 3. 4. 3. 2. 3. 4. 3. 4. 4. 4. 4. 4. 4. 3. 2. 4. 4. 4. 3. 4. 4. 4. 4. 3. 3. 2. 3. 4. 4. 4. 4. 4. 4. 3. 4. 3. 3. 0. 4. 4. 3. 3. 1. 1. 1. 4. 4. 3. 2. 4. 3. 4. 4. 3. 3. 4. 4. 2. 4. 4. 2. 2. 2. 4. 3. 4. 3. 2. 3. 4. 3. 4. 4. 3. 3. 4. 4. 4. 3. 4. 3. 4. 4. 3. 3. 3. 1. 1. 4. 3. 4. 3. 1. 1. 4. 2. 4. 4. 3. 1. 3. 4. 1. 4. 4. 4. 4. 2. 3. 3. 2. 4. 3. 3. 3. 1. 4. 4. 4. 3. 4. 4. 3. 4. 4. 3. 3. 2. 3. 4. 4. 4. 4. 4. 3. 4. 4. 2. 3. 4. 3. 3. 3. 3. 3. 4. 3. 3. 4. 3. 2. 3. 3. 3. 4. 4. 3. 4. 3. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 3. 4. 4. 4. 4. 3. 3. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 2. 3. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 2. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. }
{ 0. 0. 0. 0. 0. 2. 3. 2. 2. 2. 3. 2. 2. 3. 2. 2. 3. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 2. 3. 2. 2. 2. 1. 2. 2. 2. 3. 0. 2. 2. 2. 2. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 2. 2. 1. 2. 3. 2. 3. 2. 2. 2. 2. 2. 2. 2. 3. 2. 3. 3. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 3. 1. 1. 2. 3. 2. 2. 2. 2. 2. 2. 3. 3. 1. 3. 1. 1. 1. 1. 2. 3. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 2. 2. 1. 2. 2. 2. 2. 2. 2. 2. 1. 1. 1. 1. 3. 2. 2. 2. 2. 2. 2. 2. 1. 1. 1. 3. 2. 3. 2. 1. 1. 2. 1. 1. 1. 2. 2. 3. 3. 2. 2. 2. 1. 2. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 2. 2. 2. 1. 1. 1. 1. 1. 1. 2. 2. 2. 1. 1. 2. 1. 2. 3. 2. 2. 1. 2. 2. 1. 2. 3. 3. 3. 2. 3. 2. 2. 1. 2. 2. 2. 1. 2. 2. 2. 1. 1. 0. 2. 1. 1. 1. 2. 1. 2. 1. 2. 1. 1. 2. 2. 1. 2. 3. 3. 2. 2. 2. 2. 1. 2. 2. 2. 1. 1. 2. 2. 2. 1. 2. 1. 2. 1. 2. 1. 1. 3. 2. }
{ 4. 4. 4. 4. 4. 4. 3. 3. 4. 4. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 3. 3. 3. 4. 2. 2. 3. 3. 4. 3. 4. 4. 4. 3. 3. 2. 2. 3. 4. 4. 4. 4. 4. 4. 3. 4. 0. 0. 0. 2. 4. 4. 0. 0. 0. 0. 4. 0. 2. 3. 4. 2. 3. 3. 3. 1. 4. 4. 4. 4. 4. 3. 2. 2. 3. 1. 4. 4. 4. 4. 3. 4. 4. 4. 4. 3. 4. 3. 3. 4. 3. 3. 3. 4. 4. 3. 4. 4. 3. 4. 4. 4. 3. 3. 4. 3. 3. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 3. 3. 4. 3. 3. 2. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 3. 3. 2. 3. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 2. 3. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. }
{ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. }
{ 0. 0. 0. 0. 2. 2. 4. 4. 3. 3. 4. 4. 4. 4. 3. 3. 3. 2. 2. 4. 4. 1. 2. 2. 2. 4. 4. 3. 3. 3. 3. 4. 3. 4. 2. 4. 4. 2. 0. 4. 4. 4. 4. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 4. 4. 4. 4. 4. 3. 2. 4. 4. 4. 3. 4. 4. 4. 4. 3. 3. 4. 3. 3. 3. 4. 4. 4. 4. 3. 3. 4. 3. 4. 4. 0. 3. 3. 3. 4. 3. 4. 2. 2. 3. 4. 4. 4. 4. 4. 3. 3. 3. 3. 3. 3. 3. 4. 4. 4. 3. 2. 2. 3. 1. 2. 1. 4. 3. 2. 2. 4. 4. 3. 4. 4. 4. 4. 4. 2. 2. 4. 2. 2. 0. 2. 0. 3. 2. 4. 3. 0. 2. 3. 3. 2. 3. 4. 2. 3. 2. 2. 2. 3. 2. 0. 3. 3. 0. 0. 0. 0. 0. 0. 3. 2. 3. 1. 3. 3. 0. 0. 0. 3. 3. 0. 0. 0. 2. 2. 3. 2. 2. 3. 2. 2. 3. 2. 3. 2. 3. 2. 3. 3. 2. 3. 4. 3. 3. 4. 2. 2. 3. 2. 1. 2. 2. 3. 2. 4. 3. 2. 2. 2. 3. 4. 2. 1. 2. 1. 2. 0. 0. 1. 2. 3. 1. 2. 3. 2. 2. 3. 1. 2. 0. 4. 4. 4. 4. 4. 4. 4. 3. 2. 3. 4. 4. 3. 3. 3. 3. 4. }
{ 0. 0. 0. 0. 0. 2. 3. 3. 3. 3. 3. 4. 4. 3. 4. 3. 4. 3. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 3. 3. 3. 4. 3. 4. 3. 3. 0. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 4. 3. 4. 3. 3. 3. 3. 3. 3. 2. 3. 3. 3. 3. 3. 4. 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 3. 3. 3. 3. 3. 2. 3. 3. 3. 4. 3. 4. 3. 3. 4. 2. 2. 2. 4. 2. 3. 4. 3. 3. 4. 3. 3. 3. 2. 3. 3. 3. 4. 2. 2. 4. 4. 2. 2. 3. 2. 4. 4. 4. 4. 3. 4. 4. 4. 2. 4. 3. 4. 4. 4. 4. 2. 3. 4. 4. 4. 4. 3. 4. 3. 3. 3. 2. 4. 3. 3. 4. 4. 3. 3. 3. 3. 3. 4. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 4. 4. 3. 2. 3. 2. 4. 4. 3. 2. 2. 0. 2. 1. 3. 4. 4. 4. 4. 2. 3. 4. 3. 4. 3. 3. 3. 4. 3. 3. 3. 2. 3. 4. 3. 3. 2. 3. 2. 2. 3. 2. 1. 2. 0. 2. 2. 2. 3. 3. 3. 2. 2. 2. 2. 2. 1. 1. 1. 2. 3. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 3. 3. }
{ 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 3. 3. 3. 4. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 2. 2. 2. 3. 2. 3. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 3. 2. 3. 3. 3. 2. 3. 2. 3. 3. 4. 4. 3. 2. 4. 3. 3. 3. 3. 1. 1. 3. 2. 3. 3. 3. 2. 3. 4. 3. 3. 3. 4. 3. 2. 4. 4. 3. 3. 3. 2. 2. 4. 2. 4. 2. 3. 2. 2. 3. 4. 3. 4. 3. 2. 2. 4. 2. 3. 2. 2. 2. 3. 4. 2. 4. 3. 4. 2. 2. 2. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 2. 4. 4. 3. 3. 3. 0. 0. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 2. 0. 2. 3. 3. 3. 3. 0. 2. 2. 2. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 2. 3. 3. 3. 3. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 2. 2. 3. }
{ 4. 2. 2. 4. 2. 2. 3. 4. 4. 3. 3. 4. 4. 4. 4. 4. 2. 4. 4. 4. 4. 4. 3. 3. 4. 4. 4. 3. 4. 3. 4. 4. 4. 3. 3. 3. 4. 2. 4. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 3. 2. 3. 3. 3. 3. 3. 4. 4. 4. 3. 2. 4. 3. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 3. 4. 4. 4. 3. 3. 3. 3. 4. 4. 4. 4. 4. 3. 4. 3. 4. 4. 4. 4. 4. 3. 3. 4. 4. 4. 4. 4. 4. 3. 4. 3. 4. 4. 4. 3. 3. 4. 4. 4. 4. 4. 3. 2. 4. 1. 3. 3. 3. 3. 1. 4. 4. 3. 3. 3. 3. 3. 3. 3. 4. 4. 4. 2. 1. 4. 4. 4. 4. 4. 3. 2. 4. 4. 4. 4. 4. 0. 3. 4. 4. 4. 4. 4. 1. 4. 4. 4. 3. 1. 1. 3. 3. 4. 4. 4. 4. 4. 4. 0. 4. 4. 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 3. 4. 4. 4. 1. 4. 4. 1. 1. 1. 4. 4. 4. 1. 1. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 1. 1. 4. 4. 4. 4. 4. 2. 4. 4. 4. 4. 4. 4. 3. 4. 4. 4. 4. 4. 4. 2. 3. 4. 4. 4. 4. 4. 3. 3. 4. }
{ 2. 3. 3. 3. 4. 3. 2. 2. 2. 3. 2. 2. 2. 2. 3. 3. 2. 3. 2. 2. 2. 2. 2. 2. 3. 2. 2. 2. 2. 3. 2. 2. 2. 2. 2. 2. 3. 3. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 2. 1. 3. 4. 2. 1. 2. 2. 1. 2. 2. 2. 2. 3. 2. 4. 3. 4. 4. 2. 2. 4. 4. 4. 4. 4. 2. 2. 3. 3. 3. 3. 3. 3. 1. 3. 3. 3. 3. 3. 2. 1. 3. 3. 3. 3. 3. 1. 1. 3. 3. 3. 3. 3. 1. 1. 3. 1. 3. 3. 3. 3. 2. 3. 3. 3. 3. 3. 1. 1. 3. 1. 2. 2. 2. 2. 1. 3. 3. 3. 3. 3. 3. 2. 2. 2. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 1. 1. 3. 3. 3. 3. 3. 0. 0. 3. 3. 3. 3. 3. 1. 1. 3. 3. 1. 1. 1. 1. 2. 3. 3. 3. 3. 3. 2. 1. 3. 3. 3. 3. 3. 1. 1. 3. 3. 3. 3. 3. 1. 1. 1. 1. 1. 1. 1. 1. 2. 2. 3. 3. 2. 1. 1. 1. 2. 3. 3. 3. 3. 1. 1. 3. 2. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 2. 3. }
{ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 4. 3. 3. 4. 2. 4. 3. 4. 2. 4. 1. 2. 4. 4. 4. 4. 1. 4. 4. 4. 3. 4. 2. 4. 3. 2. 3. 2. 4. 4. 4. 3. 3. 2. 3. 4. 3. 3. 4. 4. 4. 4. 4. 4. 1. 4. 4. 2. 3. 4. 1. 4. 2. 3. 3. 4. 4. 4. 4. 2. 3. 3. 4. 4. 3. 1. 0. 0. 2. 0. 4. 0. 0. 0. 1. 1. 3. 4. 0. 0. 2. 0. 0. 0. 0. 2. 0. 0. 0. 3. 4. 0. 0. 0. 0. 2. 1. 3. 4. 0. 1. 0. 0. 0. 1. 4. 2. 4. 3. 0. 4. 4. 4. 4. 3. 3. 0. 0. 0. 0. 0. 3. 0. 3. 3. 1. 1. 3. 0. 0. 0. 2. 1. 1. 0. 0. 0. 0. 0. 3. 2. 0. 0. 0. 0. 0. 1. 4. 0. 0. 0. 0. 3. 0. 0. 0. 0. 0. 0. 4. 4. 2. 3. }
{ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 2. 3. 2. 3. 3. 3. 1. 1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 2. 2. 2. 2. 3. 3. 2. 2. 2. 2. 3. 2. 3. 2. 2. 2. 2. 2. 3. 3. 3. 3. 2. 2. 2. 3. 2. 3. 3. 2. 3. 3. 3. 2. 3. 3. 3. 3. 3. 0. 2. 3. 2. 2. 2. 2. 2. 3. 3. 1. 1. 2. 2. 1. 1. 2. 2. 2. 2. 3. 3. 3. 3. 3. 3. 2. 2. 3. 3. 3. 1. 0. 3. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 1. 2. 3. 3. 2. 3. 3. 3. 3. 3. 3. 2. 3. 3. 3. 3. 1. 1. 2. 2. 2. 3. 3. 3. 3. 3. 3. 3. 2. 3. 3. 3. 2. 3. 3. 3. 3. 2. 3. 1. 3. 3. 3. 3. 3. 3. 3. }
{ 60. 180. 180. 30. 240. 120. 150. 90. 0. 60. 90. 240. 360. 420. 420. 420. 90. 120. 420. 420. 420. 420. 420. 180. 420. 420. 480. 420. 420. 420. 180. 180. 420. 420. 420. 420. 420. 240. 0. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 360. 240. 240. 420. 240. 360. 240. 360. 360. 420. 360. 420. 360. 360. 360. 360. 360. 360. 360. 420. 420. 420. 360. 360. 420. 420. 420. 420. 360. 480. 420. 360. 360. 420. 420. 420. 360. 360. 420. 360. 420. 420. 420. 360. 420. 420. 420. 420. 360. 420. 360. 240. 420. 360. 360. 420. 420. 420. 240. 420. 360. 420. 420. 420. 240. 420. 420. 420. 420. 420. 420. 270. 360. 420. 420. 420. 360. 360. 480. 420. 360. 420. 420. 420. 420. 420. 360. 360. 420. 420. 420. 270. 360. 360. 420. 420. 420. 420. 420. 360. 360. 390. 420. 390. 390. 390. 0. 0. 360. 360. 360. 360. 420. 390. 270. 390. 360. 360. 360. 360. 360. 420. 420. 420. 420. 420. 420. 480. 390. 420. 480. 480. 480. 360. 420. 420. 420. 360. 420. 420. 420. 420. 420. 420. 420. 480. 420. 420. 480. 480. 480. 420. 480. 360. 360. 360. 450. 420. 420. 420. 480. 420. 540. 480. 420. 480. 420. 450. 480. 480. 480. 420. 390. 480. 390. 510. 480. 510. 420. 480. 420. 480. 420. 540. 540. 480. 480. 510. 420. 420. 420. 420. 390. 450. 450. 450. 510. 420. 420. 450. }