#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>

#define CRCPOLY_LE 0xedb88320

static uint32_t crc32_le(uint32_t crc, unsigned char const *p, size_t len) {
    int i;
    
    while (len--) {
	crc ^= *p++;
	for (i = 0; i < 8; i++)
	    crc = (crc >> 1) ^ ((crc & 1) ? CRCPOLY_LE : 0);
    }
    return crc;
}

int main(int argc, char *argv[]) {
    unsigned char buf[4096];

    while (fread(buf, 4096, 1, stdin) == 1) {
	uint32_t sum;

	sum = crc32_le(~0, buf, 4096);
	printf("%08x\n", sum);
	
    }
    
    return 0;
}
