#include <bits/stdc++.h>
using namespace std;
int n;
int ans1, ans2;
struct Node {
int v;
Node *next;
Node *prev;
} a[1000001];
int main() {
scanf ("%d", &n);
for (int i = 1; i <= n; i++) {
a[i].v = i;
if (i == n)
a[i].next = &a[1];
else
a[i].next = &a[i + 1];
if (i == 1)
a[i].prev = &a[n];
else
a[i].prev = &a[i - 1];
}
Node *p = &a[n];
int x = 0, m = n, i = 1, t = 0;
while (1) {
p = p->next;
++x;
if (i == m)
m -= t,
i = 1,
t = 0;
if (i == 1)
ans1++;
if (x == 3) {
if (p->v == n)
ans2 = ans1;
if (p->next == p)
break;
else {
Node *l = p->prev, *r = p->next;
l->next = r;
r->prev = l;
p->next = p->prev = NULL;
p = l;
x = 0;
t++;
}
}
i++;
}
printf("%d %d\n", ans1, ans2);
return 0;
}
为啥不对