#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
//#include <math.h>


int main(int argc, char **argv){
	uint64_t sectors_512;
	uint64_t sectors_1MiB;
	uint64_t start = 1;
	uint64_t end;
	uint64_t sectors = 0;
	uint64_t sectors_per_partition;
	uint8_t partition;
	uint8_t max_partitions = 4;
	//uint8_t count;
	//uint64_t remaining;
	//uint64_t end_reserve = 0;
	//uint64_t part_start[4] = 0;
	//uint64_t part_end[4] = 0;


	if(argc != 2)
		exit(1);

	sectors_512 = (uint64_t)atol(argv[1]);


	printf("total sectors(512b): %" PRIu64 "\n", sectors_512);
	sectors_1MiB = sectors_512 / 2048;
	printf("total sectors(1MiB): %" PRIu64 "\n", sectors_1MiB);
	printf("device\t\tstart\t\tend\t\tsectors\n");

	//create 4 even sized partitions each starting on a sector that is evenly divisible by 1048576 bytes
	sectors_per_partition = (sectors_1MiB - 1) / 4;

	for(partition=0; partition<max_partitions; partition++){

		end = start + sectors_per_partition;
		//printf("\t1\t%" PRIu64 "\t%" PRIu64 "%" PRIu64 "\n", start, end, sectors);
		sectors = end - start;
		printf("%u\t\t%" PRIu64 "\t\t%" PRIu64 "\t\t%" PRIu64 "\n", partition+1, start*2048, end*2048-1, sectors*2048-1);
		start += sectors_per_partition;
	}

	return 0;
}
