Go: package main

import (
	"fmt"
	"strconv"
)

func main() {
	for _, leftValue := range MultiplicationTableNum(9) {
		for _, rightValue := range MultiplicationTableNum(9) {
			strLeftVal, strRightVal, strMulti := strconv.Itoa(leftValue), strconv.Itoa(rightValue), strconv.Itoa(Multiplication(leftValue, rightValue))
			fmt.Println(strLeftVal + "x" + strRightVal + "=" + strMulti)
		}
	}
}

func MultiplicationTableNum(num int) []int {
	multiNum := []int{}
	for i := 1; i <= num; i++ {
		multiNum = append(multiNum, i)
	}
	return multiNum
}

func Multiplication(x, y int) int {
	return x * y
}

C++: #include <iostream>
using namespace std;
  int main(){
	for(int i=1;i<=9;i++){
		for(int j=1;j<=9;j++){
			cout<<i<<"x"<<j<<"="<<i*j<<endl;	
		}
	}
    return 0;
}

C++: object Main  {
    def main(args:Array[String]):Unit=for(i <- 1 to 9 ;j <- 1 to 9)println(i+"x"+j+"="+i*j)
}

C++: #include <bits/stdc++.h>
using namespace std;

int main(){
    for(int i=1;i<10;i++){
        for(int j=1;j<10;j++){
            cout<<i<<"x"<<j<<"="<<i*j<<endl;
        }
    }
	return 0;
}

C++: #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;

const int MAXN = 100000;
struct Trie {
    int next[MAXN][2], fail[MAXN];
    bool end[MAXN];
    int L,root;

    int newNode() {
        for (int i = 0; i < 2; i++)
            next[L][i] = -1;
        end[L] = false;
        return L++;
    }

    void init() {
        L = 0;
        root = newNode();
    }

    void insert(int s[], int id, int n) {
        int now = root;
        for (int i = 0; i < n; i++) {
            if (next[now][s[i] == id] == -1)
                next[now][s[i] == id] = newNode();
            now = next[now][s[i] == id];
        }
        end[now] = true;
    }

    void build() {
        queue<int> Q;
        for (int i = 0; i < 2; i++)
            if (next[root][i] == -1)
                next[root][i] = root;
            else {
                fail[next[root][i]] = root;
                Q.push(next[root][i]);
            }
        while (!Q.empty()) {
            int now = Q.front();
            Q.pop();
            end[now] |= end[fail[now]];
            for (int i = 0; i < 2; i++)
                if (next[now][i] == -1)
                    next[now][i] = next[fail[now]][i];
                else {
                    fail[next[now][i]] = next[fail[now]][i];
                    Q.push(next[now][i]);
                }
        }
    }
};
Trie xiaodao[25];
int n, m, ha, hb;
int a[MAXN], b[MAXN], c[MAXN];
int pos[25][25];

bool check(int now, int last) {
    if (now == ha)  return true;
    for (int i = last + 1; i < hb; i++)
        if (xiaodao[i].end[pos[now][i]])
            if (check(now + 1, i))
                return true;
    return false;
}
int main() {
    while (scanf("%d%d%d", &n, &m, &ha) != EOF) {
        for (int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
            a[i]--;
            c[i] = a[i];
        }
        sort(c, c + n);
        ha = unique(c, c + n) - c;
        for (int i = 0; i < n; i++)
            a[i] = lower_bound(c, c + ha, a[i]) - c;

        for (int i = 0; i < m; i++) {
            scanf("%d", &b[i]);
            b[i]--;
            c[i] = b[i];
        }
        sort(c, c + m);
        hb = unique(c, c + m) - c;
        for (int i = 0; i < m; i++)
            b[i] = lower_bound(c, c + hb, b[i]) - c;

        for (int i = 0; i < hb; i++) {
            xiaodao[i].init();
            xiaodao[i].insert(b, i, m);
            xiaodao[i].build();
        }
        memset(pos, 0, sizeof(pos));
        int ans = 0;
        for (int i = 0; i < n; i++) {
            for (int aaa = 0; aaa < ha; aaa++)
                for (int bbb = 0; bbb < hb; bbb++)
                    pos[aaa][bbb] = xiaodao[bbb].next[pos[aaa][bbb]][aaa == a[i]];
            if (check(0, -1)) {
                ans++;
                memset(pos, 0, sizeof(pos));
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}

C++: #include<iostream>
using namespace std;
 
int main(){
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
if(i>=j){
cout << i << "x" << j << "=" << i*j << endl;
}
else
{
break;
}
}
}
    return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
    for(int i = 1; i <= 9; ++i){
        for(int j = 1; j <= 9; ++j){
            cout << i << "x" << j << "=" << (i * j) << "\n";
        }
    }
    return 0;
}

C++: #include <stdio.h>

int main()
{
    for(int i=1; i<=9; i++)
        for(int j=1; j<=9; j++)

}

C++: #include <iostream>
using namespace std;

int main()
{
	int k, j;

	for (k = 1; k <= 9; k++)
	{
		for (j = 1; j <= 9; j++)
		{
			cout << k << "x" << j << "=" << k*j << endl;
		}

	}

	return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
int main(void){
    for (int i=1;i<=9;i++) {
        for (int j=1;j<=9;j++) {
            cout << i << "x" << j << "=" << i*j << endl;
        }
    }
}

C++: #include<stdio.h> 
int main() {
int a,i,j;
for(i=1;i<=9;i++) {
  for(j=1;j<=9;j++) {
    printf("%d x %d = %d",i,j,i*j);
    printf("\n");
  }
}
return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
  for(int i = 1; i <= 9; i++)
    for(int j = 1; j <= 9; j++)
      cout << i << "x" << j << "=" << i*j << "\n";

  return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
  int a = 1;
  int b = 1;
  for (a < 10 && b < 9;) {
    cout << b << "x" << a << "=" << a*b << endl;
    ++a;
    if (a == 10 && b <= 8;)
    ++b;
    a = 1;
  }
  return 0;
}

C++: #include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=0;j++)
{
printf("%d\n",i*j);
}
}
return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
for(int i =1;i <10;i++){
for(int j=1;j <10;j++){
cout<<i<<"x"<<j<<"="<<i*j<<endl;
}

}
    return 0;
}

C++: #include<bits/stdc++.h>
/*#include<iostream>
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<climits>*/
#define rep(i,a,b) for(int i=a;i<(b);++i)
#define rep1(i,a,b) for(int i=a;i<=(b);++i)
#define per(i,a,b) for(int i=a;i>(b);--i)
#define per1(i,a,b) for(int i=a;i>=(b);--i)
#define LL long long
#define inf 0x7f7f7f7f
#define N 35
using namespace std;

int main()
{
	int a=1,b=1;
	while(a<10&&b<10)
	{
		printf("%dx%d=%d\n",a,b,a*b);
		b++;
		if(b>9)
		{
			a++;
			b=1;
		}
	}
}

C++: #include<iostream>
using namespace std;

int main(){
	for(int i=1; i<=9; i++){
	for(int j=1; j<=9; j++){
	cout << i << "x" << j << "=" << "i*j" << "\n";
	}
	
	}
	return 0;
	}

C++: #include <iostream>
using namespace std;

int main(){
	for( int i=1 ; i<=9 ; i++){
		for(int j=1 ; j<=9 ; j++){
			cout<< i << 'x' << j << '=' << i*j << endl;
		}
	}
	return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
	int ans;
	for(int i=1; i<=9; i++){
		for(int j=1; j<=9; j++){
			printf("%dx%d=%d\n", i, j, i*j);
		}
	}
	return 0;
}

C++: #include <cstdio>

int main() {

  for (int i = 0; i < 9; ++i) {
    for (int j = 0; j < 9; ++j) {
      printf("%dx%d=%d\n", i + 1, j + 1, (i + 1) * (j + 1));
    }
  }

  return 0;
}

C++: #include <iostream>
using namespace std;
int main()
{
	 for(int i=1;i<=9;i++)
	 {
	 	for(int j=1;j<=9;j++)
	 	{
	 		cout<<i<<"x"<<j<<"="<<i*j<<endl;
		 }
	 }
	return 0;
}

C++: #include<stdio.h>

int main(void){

	for(int a=1; a<=9; a++){
		for(int b=1; b<=9; b++){
			printf("%d*%d=%d\n",a,b,a*b);
		}
	}
    return 0;
}

C++: # include <cstdio>
# include <cstring>
# include <iostream>
using namespace std;
int mul [15],a[15];
int main (void)
{
	int n;
	mul[0]=1;	
	for (int i=1;i<=10;i++)
		mul[i]=mul[i-1]*4;
	while (cin>>n)
	{
		int ans=0,len=0;
		while (n)
		{
			a[++len]=n%10;
			n/=10;
		}
		for (int i=len;i>=1;i--)
		{
			if (a[i]>3)
			{
				ans+=mul[i-1]*3;
				break;
			}
			if (i>1)
				ans+=a[i]*mul[i-2]*3;
			else ans+=min(a[i],3);
		}
		cout<<ans<<endl;
	}
	return 0;
}