char* GenerateIpv6(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, int n, int o, int p) {
char* output = (char*)malloc(10);
char* output1 = (char*)malloc(10);
char* output2 = (char*)malloc(10);
char* output3 = (char*)malloc(10);
char* result = (char*)malloc(40);
snprintf((char*)output, 10 ,"%0.2X%0.2X:%0.2X%0.2X", a, b, c, d);
snprintf((char*)output1, 10, "%0.2X%0.2X:%0.2X%0.2X", e, f, g, h);
snprintf((char*)output2, 10 , "%0.2X%0.2X:%0.2X%0.2X", i, j, k, l);
snprintf((char*)output3, 10, "%0.2X%0.2X:%0.2X%0.2X", m, n, o, p);
snprintf((char*)result, 40, "%s:%s:%s:%s", output, output1, output2, output3);
free(output);
free(output1);
free(output2);
free(output3);
return (char*)result;
}