You have a string of decimal digits s. Let's define bij = si·sj. Find in matrix b the number of such rectangles that the sum bij for all cells (i, j) that are the elements of the rectangle equals a in each rectangle.

A rectangle in a matrix is a group of four integers (x, y, z, t) (x ≤ y, z ≤ t). The elements of the rectangle are all cells (i, j) such that x ≤ i ≤ y, z ≤ j ≤ t.

Input

The first line contains integer a (0 ≤ a ≤ 109), the second line contains a string of decimal integers s (1 ≤ |s| ≤ 4000).

Output

Print a single integer — the answer to a problem.

Please, do not write the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.

Examples

Input

10
12345


Output

6


Input

16
439873893693495623498263984765


Output

40


import javax.print.DocFlavor;
import java.io.*;
import java.util.*;

public class A364 {
    String filename = null;
    final int INF = 1_000_000_000;

    void solve(){
        int a = readInt();
        char[] c = readString().toCharArray();
        int[] b = new int[c.length];
        for(int i = 0;i<b.length;i++){
            b[i] = c[i] - '0';
        }

        Map<Integer, Integer> exist = new HashMap<>();
        long ans = 0;
        for(int i = 0;i<b.length;i++){
            int now = 0;
            for(int j = i;j<b.length;j++){
                now += b[j];
                int x = exist.getOrDefault(now, 0);
                exist.put(now, x + 1);
            }
        }

        for(int i = 0;i<b.length;i++){
            int now = 0;
            for(int j = i;j<b.length;j++){
                now += b[j];
                if(now == 0){
                    if(a != 0) continue;
                    ans += (c.length + 1) * c.length - (c.length + 1) * c.length / 2;
                    continue;
                }
                if(a % now == 0 && exist.containsKey(a / now)) ans += exist.get(a / now);
            }
        }
        out.print(ans);
    }
    public static void main(String[] args) {
        new A364().run();
    }
    private void run() {
        try {
            init();
            solve();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
    }

    private BufferedReader in;
    private StringTokenizer tok = new StringTokenizer("");

    private PrintWriter out;

    private void init() {
        if (filename == null) {
            in = new BufferedReader(new InputStreamReader(System.in));
            out = new PrintWriter(System.out);
            return;
        }

        try {
            in = new BufferedReader(new FileReader(new File(filename)));
            out = new PrintWriter(new File(filename));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
    private String readLine() {
        try {
            return in.readLine();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private String readString() {
        while (!tok.hasMoreTokens()) {
            String nextLine = readLine();
            if (nextLine == null) return null;
            tok = new StringTokenizer(nextLine);
        }

        return tok.nextToken();
    }

    private int readInt() {
        return Integer.parseInt(readString());
    }

    private long readLong() {
        return Long.parseLong(readString());
    }
}
