// Reveal top byte of max value via memory side-channel.
// mem(KB) ~= 524296 + (t+1), where t = (max >> 24).
static volatile unsigned char pages[256 * 4096];
void sort(unsigned *a, int n) {
unsigned mx = 0;
for (int i = 0; i < n; i++) if (a[i] > mx) mx = a[i];
int t = (int)(mx >> 24);
for (int i = 0; i <= t; i++) pages[i * 4096] = (unsigned char)i;
}