#include<bits/stdc++.h>
using namespace std;
using Int = long long;
template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}

//INSERT ABOVE HERE
const int MAX = 2020;
bool a[MAX][MAX]={};
using BS = bitset<MAX>;
BS st[MAX],dpL[MAX],dpR[MAX];
signed main(){
  int n;
  cin>>n;
  for(int i=1;i<n;i++){
    string s;
    cin>>s;
    for(int j=0;j<i;j++){
      a[i][j]=s[j]-'0';      
      a[j][i]=!a[i][j];
    }
  }
  
  for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
      if(a[i][j]) st[i].set(j);
      
  for(int i=0;i<n;i++){
    dpL[i].set(i);
    dpR[i].set(i);
  }

  for(int w=2;w<=n;w++){
    for(int i=0;i+w<=n;i++){
      int l=i,r=i+w-1;
      {
        BS x=dpR[l+1]&dpL[r]&st[l];      
        if((((x>>(r+1))<<(r+1))^((x>>(l+1))<<(l+1))).any()) dpL[r].set(l);
      }
      { 
        BS x=dpR[l]&dpL[r-1]&st[r];
        if((((x>>r)<<r)^((x>>l)<<l)).any()) dpR[l].set(r);        
      }
    }
  }
  
  cout<<(dpR[0]&dpL[n-1]).count()<<endl;  
  return 0;
}
