1/**2* @param {number} n3* @return {number}4*/5var checkRecord = function (n) {6/**7* P(n) = A(n - 1) + P(n - 1) + L(n - 1), n ≥ 2.8* L(n) = A(n - 1) + P(n - 1) + A(n - 2) + P(n - 2), n ≥ 3.9* A(n) = A(n - 1) + A(n - 2) + A(n - 3), n ≥ 4.10*/11const m = 1000000007;12const P = Array(n);13const A = Array(n);14const L = Array(n);15A[0] = 1;16L[0] = 1;17P[0] = 1;18A[1] = 2;19A[2] = 4;20L[1] = 3;21for (let i = 1; i < n; i++) {22P[i] = (A[i - 1] + L[i - 1] + P[i - 1]) % m;23if (i >= 3) A[i] = (A[i - 1] + A[i - 2] + A[i - 3]) % m;24if (i >= 2) L[i] = (A[i - 1] + P[i - 1] + A[i - 2] + P[i - 2]) % m;25}26return (P[n - 1] + A[n - 1] + L[n - 1]) % m;27};