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


/*
Device       Start        End    Sectors  Size Type
/dev/sdc1  9764864 9767541134 9757776271  4.6T Linux filesystem
/dev/sdc2     2048     245759     243712  119M Linux swap
/dev/sdc3   245760    9764863    9519104  4.6G Linux swap
*/

int main(int argc, char **argv){
	uint64_t sectors_512;
//	uint64_t sectors_4k;
	uint64_t start = 2048;
	uint64_t end;
	uint64_t sectors;
	uint64_t remaining;
	uint64_t end_reserve = 0;//2048;

uint64_t part_one_sectors = 0;
uint64_t part_two_sectors = 8192;
uint64_t part_three_sectors = 100;


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

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


	printf("total sectors: %" PRIu64 "\n", sectors_512);
	printf("device\tstart\tend\tsectors\n");

part_one_sectors = sectors_512-start-part_two_sectors-part_three_sectors;
part_three_sectors = 16777216;
part_two_sectors = 204800;

	sectors = 1048576*128/512;
sectors = part_two_sectors;


	end = start+sectors-1;
	if((end % 8) != 7)
		printf("not aligned\n");
	remaining = sectors_512-sectors-start;
	printf("2\t%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\n", start, end, sectors);

	sectors = 1048576/512*5000;
sectors = part_three_sectors;

	start = end+1;
	end = start+sectors-1;
        if((end % 8) != 7)
                printf("not aligned\n");
	remaining -= sectors;
	printf("3\t%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\n", start, end, sectors);


	sectors = remaining-end_reserve;

	start = end+1;
	end = start+sectors-1;
        if((end % 8) != 7)
                printf("not aligned\n");

	printf("1\t%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\n", start, end, sectors);

	return 0;
}
