#include "triples.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define all(x) x.begin(),x.end()
#define rall(x) x.begin(),x.end()
#ifdef MARCO
#define infof(str,...) do{fprintf(stderr, str"\n", ##__VA_ARGS__);}while(0);
#define infor(str,...) do{fprintf(stderr, str, ##__VA_ARGS__);}while(0);
#else
#define infof(str,...)
#define infor(str,...)
#endif
long long count_triples(std::vector<int> H) {
ll ans = 0;
int N = H.size();
for(int i=0; i<N; i++) {
if(i - H[i] >= 0) {
int j = i - H[i];
if(j + H[j] < i) {
int k1 = j + H[j];
if(k1 + H[k1] == i)
ans++;
int k2 = i - H[j];
if(k2 != k1 && j + H[k2] == k2)
ans++;
}
}
if(i + H[i] < N) {
int j = i + H[i];
if(j - H[j] > i) {
int k1 = j - H[j];
if(k1 - H[k1] == i)
ans++;
int k2 = i + H[j];
if(k2 != k1 && k2 + H[k2] == j)
ans++;
}
}
// for(int j = max(0, i - H[i]); j < i; j++) {
// int k = j + H[i];
// if(k >= N) continue;
// if(j + H[j] == i && k - H[k] == i) {
// ans++;
// continue;
// }
// if(j + H[k] == i && k - H[j] == i) {
// ans++;
// continue;
// }
// }
}
return ans;
}
std::vector<int> construct_range(int M, int K) {
vector<int> ans(M);
for(int i=0; i<M; i++) {
if(i%4 == 3) ans[i] = 3;
else if(i%4 == 2) ans[i] = 2;
else ans[i] = 1;
}
return ans;
}
#ifdef MARCO
namespace {
void run_part1() {
int N;
assert(1 == scanf("%d", &N));
std::vector<int> H(N);
for (int i = 0; i < N; i++)
assert(1 == scanf("%d", &H[i]));
fclose(stdin);
long long T = count_triples(H);
printf("%lld\n", T);
fclose(stdout);
}
void run_part2() {
int M, K;
assert(2 == scanf("%d %d", &M, &K));
fclose(stdin);
std::vector<int> H = construct_range(M, K);
int N = H.size();
printf("%d\n", N);
for (int i = 0; i < N; i++)
printf("%d%c", H[i], " \n"[i + 1 == N]);
fclose(stdout);
}
} // namespace
int main() {
int part;
assert(1 == scanf("%d", &part));
if (part == 1)
run_part1();
else if (part == 2)
run_part2();
return 0;
}
#endif