#include<bits/stdc++.h>
#define MAXN 200007
using namespace std;

int s[MAXN];
long long n,L;

bool li[2007][5007][3];
int dp[2007][5007][3];

int ff(int pos,int len,int f){
    if(len-f<0)return -n;
    if(pos==0)return 0;

    if(li[pos][len][f])return dp[pos][len][f];
    li[pos][len][f]=true;

    dp[pos][len][f]=ff(pos-1,len,f);

    if(f==0){
        dp[pos][len][f] = max(dp[pos][len][f] , ff(pos-1,len-s[pos], s[pos]%3) + 1 );
    }else{
        if(s[pos]%3==2 and f==2){
             dp[pos][len][f] = max(dp[pos][len][f] , ff(pos-1,len-s[pos]-1, 2) + 1 );     
        }else{
            int r = (f+s[pos])%3==0 ? 0 : 1; 
            dp[pos][len][f] = max(dp[pos][len][f] , ff(pos-1,len-s[pos]-r, 0) + 1 );
        }
    }

    return dp[pos][len][f];
}

int main(){

    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>L;

    if(L<=2 or n<=2){
        cout<<min(n,L)<<"\n";
        return 0;
    }

    for(int i=1;i<=n;i++){
        cin>>s[i];
    }

    cout<<min( n, ff(n,3*(L-2),0)+2LL )<<"\n";

    return 0;
}