#include <stdio.h>
#include <stdlib.h>
 
int default_rand() {
  static unsigned int i=3, r[34] = { 0xf3bec5da, 0x991539b1, 0x16a5bce3, 0x6774a4cd,
             0x55928aca, 0xc34a51a2, 0x73b5def3, 0x3e01511e, 0x4e508aaa, 0x61048c05,
             0xf5500617, 0x846b7115, 0x6a19892c, 0x896a97af, 0xdb48f936, 0x14898454,
             0x37ffd106, 0xb58bff9c, 0x59e17104, 0xcf918a49, 0x09378c83, 0x52c7a471,
             0x8d293ea9, 0x1f4fc301, 0xc3db71be, 0x39b44e1c, 0xf8a44ef9, 0x4c8b80b1,
             0x19edc328, 0x87bf4bdd, 0xc9b240e5, 0xe9ee4b1b, 0x4382aee7, 0x535b6b41 };
  i = (i+1) % 34;
  return (r[i] = r[(i+3)%34] + r[(i+31)%34]) >> 1;
}
 
int main(void) {
  int i;
  for (i=0; i<1000000; i++) {
    if (default_rand
() != rand()) {       return 0;
    }
  }
  printf("Tested %d values; no errors\n",i
);   return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBkZWZhdWx0X3JhbmQoKSB7CiAgc3RhdGljIHVuc2lnbmVkIGludCBpPTMsIHJbMzRdID0geyAweGYzYmVjNWRhLCAweDk5MTUzOWIxLCAweDE2YTViY2UzLCAweDY3NzRhNGNkLAogICAgICAgICAgICAgMHg1NTkyOGFjYSwgMHhjMzRhNTFhMiwgMHg3M2I1ZGVmMywgMHgzZTAxNTExZSwgMHg0ZTUwOGFhYSwgMHg2MTA0OGMwNSwKICAgICAgICAgICAgIDB4ZjU1MDA2MTcsIDB4ODQ2YjcxMTUsIDB4NmExOTg5MmMsIDB4ODk2YTk3YWYsIDB4ZGI0OGY5MzYsIDB4MTQ4OTg0NTQsCiAgICAgICAgICAgICAweDM3ZmZkMTA2LCAweGI1OGJmZjljLCAweDU5ZTE3MTA0LCAweGNmOTE4YTQ5LCAweDA5Mzc4YzgzLCAweDUyYzdhNDcxLAogICAgICAgICAgICAgMHg4ZDI5M2VhOSwgMHgxZjRmYzMwMSwgMHhjM2RiNzFiZSwgMHgzOWI0NGUxYywgMHhmOGE0NGVmOSwgMHg0YzhiODBiMSwKICAgICAgICAgICAgIDB4MTllZGMzMjgsIDB4ODdiZjRiZGQsIDB4YzliMjQwZTUsIDB4ZTllZTRiMWIsIDB4NDM4MmFlZTcsIDB4NTM1YjZiNDEgfTsKICBpID0gKGkrMSkgJSAzNDsKICByZXR1cm4gKHJbaV0gPSByWyhpKzMpJTM0XSArIHJbKGkrMzEpJTM0XSkgPj4gMTsKfQoKaW50IG1haW4odm9pZCkgewogIGludCBpOwogIHNyYW5kKDEpOwogIGZvciAoaT0wOyBpPDEwMDAwMDA7IGkrKykgewogICAgaWYgKGRlZmF1bHRfcmFuZCgpICE9IHJhbmQoKSkgewogICAgICBwcmludGYoIk1pc21hdGNoIGF0IGk9JWRcbiIpOwogICAgICByZXR1cm4gMDsKICAgIH0KICB9CiAgcHJpbnRmKCJUZXN0ZWQgJWQgdmFsdWVzOyBubyBlcnJvcnNcbiIsaSk7CiAgcmV0dXJuIDA7Cn0K