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++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

/*#include <stdio.h>
int main(void) {
	int n ,s1, e1, min, dis, a;
	char s2, e2;
	double p = 3.14259265;

	scanf("%d", &n);
	scanf("%d %c",&s1,&s2);
	scanf("%d %c",&e1,&e2);
	if (s1 - e1<0) {
		dis = e1 - s1;
		a = s1;
	}
	else {
		dis = s1 - e1;
		a = e1;
	}

	if (s2 == e2)
		min = dis * 100;
	else if ((s2 == 'S'&&e2 == 'N') || (s2 == 'N'&&e2 == 'S'))
		min = (e1 + s1) * 100;
	else if ((s2 == 'E'&&e2 == 'W') || (s2 == 'W'&&e2 == 'E'))
		min = (e1 + s1) * 100;
	else
		min = dis * 100 + (double)(a * 100 * p) / 2;

		printf("%ld\n", min);
	return 0;
}*/


/*
#include <stdio.h>

int main(void) {
	int n, m = 2, q[50], i, sum = 1;

	scanf("%d", &n);
	for (i = 0; i < n; i++) {
		scanf("%d", &q[i]);
	}
	for (i = 0; i < n; i++) {
		do {
			if (q[i] % m == 0) {
				sum += m;
			}
			m++;
		} while (m<q[i]);
		if (q[i] == sum)
			printf("perfect\n");
		else if (q[i] == sum + 1 || q[i] == sum - 1)
			printf("nealy\n");
		else
			printf("neither\n");
	}
	return 0;
}*/


/*
#include <stdio.h>

int main(void) {
	int point = 0, n, d[1000], p[1000], i;
	scanf("%d", &n);
	for (i = 0; i < n; i++) {
		scanf("%d %d", &d[i], &p[i]);
	}
	for (i = 0; i < n; i++) {
		switch (d[i]) {
		case 3:
		case 13:
		case 23:
		case 30:
		case 31:
			point += (p[i] * 3) / 100;
			break;
		case 5:
		case 15:
		case 25:
			point += (p[i] * 5) / 100;
			break;
		default:
			point += p[i] / 100;
		}
	}
	printf("%d", point);
	return 0;
}
#include <stdio.h>

int main()
{
	char S[4];
	int i, flag = 0;

	scanf("%s", S);

	for (i = 1; i<3; i++) {
		if (S[i] == S[i - 1] )
			flag = 1;
		 if(i == 2 &&((S[i - 1] == S[i - 2])|| S[i] == S[i - 2]))
			flag = 1;
	}
	if (flag == 0) {
		printf("Yes\n");
	}
	else {
		printf("No\n");
	}
	return 0;
}*/
#include <stdio.h>

int main() {
	int A, B, K, i;
	scanf("%d %d %d", &A, &B, &K);
	if ((B - A) > K) {
		for (i = 0; i < K; i++) {
			printf("%d\n", A);
			A++;
		}
		for (i = 0; i < K; i++) {
			printf("%d\n", B - K + 1);
			B++;
		}
	}
	else {
		for (i = 0;i<(B-A+1);i++) {
			printf("%d\n", A);
			A++;
		}
	}
	return 0;
}