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


int main(int argc, char **argv){
	uint32_t num1 = 0;
	uint32_t num2 = 0;

	uint16_t val = 0;






//    uint val = j;

for(num1=0; num1<1024; num1++){

/*
val = num1;
val = (val >> 16) + (val & 0xffffU);
val = (val >> 10) + (val & 0x3ffU);
val = (val >> 6) + (val & 0x3fU);
val = (val >> 4) + (val & 0xfU);
val = (val >> 2) + (val & 0x3U);
val = (val >> 2) + (val & 0x3U);
val = (val >> 2) + (val & 0x3U);
if(val == 3)
    val = 0;
*/

/*
val = num1;
val = (val >> 22) + (val & 0xffffU);
val = (val >> 10) + (val & 0x3ffU);
val = (val >> 6) + (val & 0x3fU);
val = (val >> 4) + (val & 0xfU);
val = (val >> 2) + (val & 0x3U);
val = (val >> 2) + (val & 0x3U);
val = (val >> 2) + (val & 0x3U);
*/
val = (uint16_t)num1;

//val = (val>>22) + (val&0x3ffU);  // 1023
//val >>= 22;
//val = (val>>22);

/*
val = (val&0x3ffU);
val = (val>>6)  + (val&0x3fU);   //63
val = (val>>4)  + (val&0xfU);  // 15
val = (val>>2)  + (val&0x3U);  //3
val = (val>>2)  + (val&0x3U);  //3
val = (val>>2)  + (val&0x3U);  //3
*/

//val &= 0x3ffU;
val = (val>>6)+(val&0x3fU);
val = (val>>4)+(val&0xfU);
val = (val>>2)+(val&0x3U);
val = (val>>2)+(val&0x3U);
val = (val>>2)+(val&0x3U);


if(val == 3)
    val = 0;

//if(val == 3)
//	val = 0;

//val = (val == 3) ? 0 : val-1;

	if(num1%32 == 0){
		printf("\n%u, ", val);
	}else{
		printf("%u, ", val);
	}


}


/*

DOW = DOW_HI*256 + DOW_LO

 DOW%7 = (DOW_HI*256 + DOW_LO) % 7
       = ((DOW_HI*256)%7  + (DOW_LO % 7)) %7
       = ((DOW_HI%7 * 256%7)  + (DOW_LO%7)) %7
       = ((DOW_HI%7 * 4)  + (DOW_LO%7)) %7


hi*32 + lo



    for(num1=0; num1<1024; num1++){

        num2 = num1%3;
        if(num2)
            num2 = 1;

        if(num1%32 == 0){
            printf("\n%u, ", num2);
        }else{
            printf("%u, ", num2);
        }
    }
    printf("\n");

	for(num1=0; num1<1024; num1++){

		num2 = num1%3;
		if(num2)
			num2--;
		if(num1%32 == 0){
			printf("\n%u, ", num2);
		}else{
			printf("%u, ", num2);
		}
	}
	printf("\n");

*/



	return 0;
}