#include <stdio.h>
#define N 1500
// #define N 100 // local execution

int main( void ){

  while( 1 ){
    int i, j, k, l;
    int n, m;
    int h[ N + 1 ], w[ N + 1 ]; // 格子の幅
    int diffMap[ N + 1 ][ N + 1 ]; // 格子の上の点
    int hBuf, wBuf;
    int ans;

    scanf( "%d%d", &n, &m );

    if( !n && !m ){
      break;
    }

    for( i = 0; i < n; i++ ){
      scanf( "%d", &h[ i ] );
    }
    for( i = 0; i < m; i++ ){
      scanf( "%d", &w[ i ] );
    }

    hBuf = 0;

    for( i = 0; i <= n; i++ ){
      wBuf = 0;

      for( j = 0; j <= m; j++ ){
        diffMap[ i ][ j ] = hBuf - wBuf;

        if( j < m ){
          wBuf += w[ j ];
        }
      }

      if( i < n ){
        hBuf += h[ i ];
      }
    }

    // solve
    ans = 0;

    for( i = 0; i < n; i++ ){
      for( j = 0; j < m; j++ ){
        for( k = i + 1; k <= n; k++ ){
          for( l = j + 1; l <= m; l++ ){
            if( diffMap[ i ][ j ] == diffMap[ k ][ l ] ){
              ans++;
            }
          }
        }
      }
    }

    printf( "%d\n", ans );
  }

  return( 0 );
}