/*
 * Copyright (c) 2007 Kamo Hiroyasu
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

/*
 * ACM ICPC 2007 Asia Regional Contest, Tokyo
 *  Problem A  And Then There Was One
 *   Author: Kamo Hiroyasu <wd@ics.nara-wu.ac.jp>
 */

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

void
array_init(int array[], int size)
{
	int	i;

	for (i = 0; i < size; i ++) {
		array[i] = i + 1;
	}
}

int *
array_delete(int *array, int size, int pos)
{
	if (pos * 2 <= size) {
		memmove(array + 1, array, pos * sizeof(array[0]));
		array ++;
	} else {
		memmove(array + pos, array + (pos + 1),
			(size - (pos + 1)) * sizeof(array[0]));
	}
	return array;
}

int
last_stone(int n, int k, int m)
{
	int	p = m - 1;
	int	l = k - 1;
	int	i;
	int	*a;
	int	array[n];
	array_init(array, n);
	a = array_delete(array, n, p);
	for (i = n - 1 ; i > 1; i --) {
		p = (p + l) % i;
		a = array_delete(a, i, p);
	}
	return a[0];
}

int
main(int argc, char *argv[])
{
	const char	*path = "A.in";
	char		*cmd;
	FILE		*fp;
	int		n, k, m;

	cmd = argv[0];
	argc --;
	argv ++;
	switch (argc) {
	case 1:
		path = *argv;
	case 0:
		break;
	default:
		fprintf(stderr, "%s: too many arguments\n", cmd);
		exit(1);
	}

	if ((fp = fopen(path, "r")) == NULL)
		return 1;
	while (fscanf(fp, "%d%d%d", &n, &k, &m) == 3 &&
	       !(n == 0 && k == 0 && m == 0)) {
#ifndef NDEBUG
		if (!(n >= 1 && n <= 10000 &&
		      k >= 1 && k <= 10000 &&
		      m >= 1 && m <= n)) {
			printf("*\n");
			continue;
		}
#endif
		printf("%d\n", last_stone(n, k, m));
	}
	return 0;
}
