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

#define LEN 128

struct marble {
	long count;
	struct marble *next;
	struct marble *prev;
} *mainroot, *root, *new, *old;

int main(void) {
	root=malloc(sizeof(struct marble));
	root->next = root->prev = root;
	root->count=0;
	mainroot = root;
	char line[LEN];
	long maxplayers;
	long maxpoints;
	fgets(line,LEN,stdin);
	sscanf(line,"%ld players; last marble is worth %ld points", &maxplayers, &maxpoints);
	printf("%ld %ld\n", maxplayers, maxpoints);
	exit(0);
	long player[maxplayers];
	memset(player,0,sizeof(player));
	
	long currentmarble=1;
	long toppoint=0;
	long currentplayer=0;
	while(toppoint<maxpoints)
	{
		old=mainroot;
		while(old->next != mainroot)
		{
			printf("%ld ", old->count);
			old = old->next;
		}
		printf("\n");
		
		if(currentmarble%23==0)
		{
			player[currentplayer] += currentmarble;
			for(int i=0;i<7;i++)
				root = root->prev;
			player[currentplayer] += root->count;
			(root->prev)->next = root->next;
			(root->next)->prev = root->prev;
			old = root;
			root = root->next;
			free(old);
		} else {
			new = malloc(sizeof(struct marble));
			new->next = (root->next)->next;
			root->next->next->prev = new;
			new->prev = root->next;
			(root->next)->next = new;
			new->count = currentmarble++;
			root = new;
		}
		
		if(toppoint<player[currentplayer])
			toppoint=player[currentplayer];
		
		currentplayer++;
		currentplayer%=maxplayers;
		
		currentmarble++;
	}
	
	printf("%ld\n",toppoint);
	
	return 0;
}
