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

#define DEBUG

size_t find_dup(int arr[][2], size_t n)
{
	for (size_t i = 0; i < n; i++)
	{
		for (size_t j = i + 1; j < n; j++)
		{
			if (arr[i][0] == arr[j][0] && arr[i][1] == arr[j][1])
			{
				memcpy(&arr[j][0], &arr[j + 1][0], (n - j) * sizeof(int) * 2);
				memset(&arr[--n][0], 0, sizeof(int) * 2);	
				
				#ifdef DEBUG
					printf("dup: %d %d\n", arr[i][0], arr[i][1]);
				#endif
			}
		}
	}
	return n;	
}

int main(void)
{
	int a[14][2] = {{1, 1}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 2}, {3, 5}, {3, 6}, {1, 5}, {4, 4}, {8, 8}, {8, 8}, {0, 1}};
	
	printf("input:\n");
	for (size_t i = 0; i < sizeof(a) / sizeof(int) / 2; i++)
		printf("%d %d\n", a[i][0], a[i][1]);
	
	size_t new_size = find_dup(a, sizeof(a) / sizeof(int) / 2);
	printf("output:\n");
	
	for (size_t i = 0; i < new_size; i++)
		printf("%d %d\n", a[i][0], a[i][1]);
	return 0;
}

