Problem:
Score : 200 points

Problem Statement

Print all the integers that satisfies the following in ascending order:

Among the integers between A and B (inclusive), it is either within the K smallest integers or within the K largest integers.

Constraints

1 \leq A \leq B \leq 10^9

1 \leq K \leq 100

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B K

Output

Print all the integers that satisfies the condition above in ascending order.

Sample Input 1

3 8 2

Sample Output 1

3
4
7
8

3 is the first smallest integer among the integers between 3 and 8.

4 is the second smallest integer among the integers between 3 and 8.

7 is the second largest integer among the integers between 3 and 8.

8 is the first largest integer among the integers between 3 and 8.

Sample Input 2

4 8 3

Sample Output 2

4
5
6
7
8

Sample Input 3

2 9 100

Sample Output 3

2
3
4
5
6
7
8
9

Solution in C (GCC 5.4.1) (judge verdict: Runtime Error)

#include<stdio.h>

int change(int *c,int x,int y) {
	int i,n=1;
	for (i = x; i < y * 2; i++) {
		if (i + 1 < y * 2) {
			c[i] = c[i + 1];
		}
	}
	return n;
}

int main() {
	int a, b, k,i,j,n = 0;
	int min;
	int c[100];
	scanf("%d %d %d", &a, &b, &k);
	if (b < k) {
		for (i = 0; i < (b-1); i++) {
			printf("%d\n", a + i);
		}return 0;
	}
	for (i = 0; i < k; i++) {
		c[i] = a + i;
		//printf("%d\n", a + i);
	}
	for (j = k -1; j >= 0; j--) {
		c[i+j] = b - j;
		//printf("%d\n", b - (i-1));
	}
	for (i = 0; i < k * 2; i++) {
		if (c[i] > c[i + 1] && (i+1)<k*2) {
			min = c[i + 1];
			c[i + 1] = c[i];
			c[i] = min;
		}
	}

	for (i = 0; i < k * 2; i++) {
		for (j = 0; j < k * 2; j++) {
			if (i != j && c[i] == c[j]) {
				n = change(c,j,k);
			}
		}
	}

	for (i = 0; i < k * 2 - n; i++) {
		printf("%d\n", c[i]);
	}
	return 0;
}