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<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<set>
#define MAXN 35
using namespace std;
/*int a[MAXN];
 bool vis[MAXN];
 int n, m, ans;
 void DFS(int st, int sum) {
 if (sum > m)
 return;
 if (ans == m)
 return;
 ans = max(ans, sum);
 int i;
 for (i = st; i < n; i++) {
 if (i > 0 && a[i] == a[i - 1] && !vis[i - 1])
 continue;
 vis[i] = true;
 DFS(i + 1, sum + a[i]);
 vis[i] = false;
 }
 }
 int main() {
 int i, s;
 while (~scanf("%d%d", &n, &m)) {
 for (s = ans = i = 0; i < n; i++) {
 scanf("%d", &a[i]);
 s += a[i];
 }
 if (s <= m) {
 printf("%d\n", s);
 continue;
 }
 sort(a, a + n);
 memset(vis, false, sizeof(vis));
 DFS(0, 0);
 printf("%d\n", ans);
 }
 return 0;
 }*/
/*
 30 10000000
 200000 300000 400000 500000 600600
 700000 80000 90000 10000 207000
 203000 220000 200000 1200000 200600
 204000 200004 520000 320000 200000
 200000 200000 200000 420000 200800
 200050 200700 2030000 520000 200080
 */
int n, m;
int a[MAXN];
set<int> myset[MAXN];
vector<int> dp[MAXN][MAXN];
void Clear() {
	int i, j;
	for (i = 0; i < MAXN; i++) {
		myset[i].clear();
		for (j = 0; j < MAXN; j++)
			dp[i][j].clear();
	}
}
int main() {
	int i, j, k, ans;
	while (~scanf("%d%d", &n, &m)) {
		Clear();
		for (i = 1; i <= n; i++)
			scanf("%d", &a[i]);
		dp[0][0].push_back(0);
		for (i = 1; i <= n; i++) {
			for (j = 1; j <= i; j++) {
				if (i - 1 >= j) {
					for (k = 0; k < dp[i - 1][j].size(); k++) {
						if (!myset[i].count(dp[i - 1][j][k])) {
							myset[i].insert(dp[i - 1][j][k]);
							dp[i][j].push_back(dp[i - 1][j][k]);
						}
					}
				}
				for (k = 0; k < dp[i - 1][j - 1].size(); k++) {
					if (dp[i - 1][j - 1][k] + a[i] <= m && !myset[i].count(dp[i
							- 1][j - 1][k] + a[i])) {
						myset[i].insert(dp[i - 1][j - 1][k] + a[i]);
						dp[i][j].push_back(dp[i - 1][j - 1][k] + a[i]);
					}
				}
			}
		}
		for (ans = i = 0; i <= n; i++) {
			for (j = 0; j <= i; j++) {
				for (k = 0; k < dp[i][j].size(); k++)
					ans = max(ans, dp[i][j][k]);
			}
		}
		printf("%d\n", ans);
	}
	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 <iostream>
using namespace std;

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

C++: #include <iostream>
using namespace std;
int main()
{
	int i,j;
	for(i=1;i<=9;i++)
		for(j=i;j<=9;j++)
			printf("%d*%d=%d\n",i,j,j*i);
	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()
{
	int i=1,j=1;

	for(i=1;i<=9;i++)
	{
		for(j=1;j<=10;j++)
		{
			if(i==9 && j==10)
                         {

			  }	
			printf("%d*%d=%d\n",i,j,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 <iostream>
#include <algorithm>
#include <cstdio>
#include <string.h>
#include <stack>
#include <vector>
#include <set>
#include <cmath>
using namespace std;

#define REP(i, n) for (int i = 0; i < n; ++i)
#define PB push_back
#define MP make_pair


const double eps = 1e-8;
const double PI  = acos(-1.0);

int sgn(double x) { return x > eps ? 1 : x < -eps ? -1 : 0;}
double sqr(double x) { return x*x; }

//莠檎サエ轤ケ
struct pt
{
    double x,y;
    pt(double _x = 0,double _y = 0) { x = _x; y = _y;}
    pt operator + (const pt &a) const { return pt(x+a.x, y+a.y);}
    pt operator - (const pt &a) const { return pt(x-a.x, y-a.y);}
    pt operator * (const double r) const { return pt(x * r, y * r);}
    pt operator / (const double r) const { return pt(x / r, y / r);}
    
	bool operator == (const pt &a) const { return sgn(x-a.x) == 0 && sgn(y-a.y) == 0; }
    
	double len() { return sqrt(x*x + y*y); }
    double ang() { return atan2(y, x); }
	
	pt unit() { double l = len(); return pt(x/l, y/l); }
	pt per()  { return pt(-y, x); }
    pt trunc(double s) { return unit() * s; }
    pt rotate(double ang) { return pt(x*cos(ang)-y*sin(ang), x*sin(ang)+y*cos(ang)); }
	void read() { scanf("%lf%lf",&x,&y);}
    void write() { printf("(%.2f, %.2f) ",x, y); }
};

double det(const pt &a,const pt &b) { return a.x*b.y - a.y*b.x; }
double dot(const pt &a,const pt &b) { return a.x*b.x + a.y*b.y; } 

double dis(const pt &a,const pt &b) { return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));}

double vp, v, r, v_ang, R;
pt a, b, peak;
pt o(0, 0);
double tangent_ang, start_ang;
double tangent_dis;

double Angle(pt a, pt b) {
    double ang = atan2(a.y, a.x) - atan2(b.y, b.x);
    if (ang > PI+eps) ang -= 2*PI;
    if (ang < -PI+eps) ang += 2*PI;
    return ang;
}
bool in(double l, double r, double ang) {
    return sgn(ang-l) > 0 && sgn(ang-r) < 0;
}
bool intervalCover(double l, double r, double ang) {
    if (r > PI) {
        return in(l, PI, ang) || in(-PI, r-2*PI, ang); 
    } else {
        return in(l, r, ang);
    }
}
bool cover(double ang, double& t) {
    if (ang < tangent_ang) {
        t = dis(a, peak.rotate(ang)) / v;
    } else {
        double delta = ang - acos(r/R) - tangent_ang;
        double len = tangent_dis + PI*delta  + sqrt(R*R-r*r);
        t = len / v;
    }
    double end_ang = start_ang + t * v_ang;
    bool tmp = intervalCover(start_ang, end_ang, ang) || 
           intervalCover(start_ang, end_ang, -ang);
    cout << tmp << endl;
    return tmp;
}

int main() {
    b.read();
    scanf("%lf",&vp);
    
    a.read();
    scanf("%lf%lf",&v, &r);
    
    R = b.len();
    v_ang = vp / R;
    peak = a.trunc(R);
    
    start_ang = Angle(a, b);
    
    double d = a.len();
    tangent_ang = acos(r / d); 
    tangent_dis = sqrt(d*d-r*r);
    
    //printf("tangent_ang = %f\n",tangent_ang);
    
    double meet, ans;
    double l = 0.0, r = PI;
    for (int run = 0; run < 100; ++run) {
        double mid = (l + r) * 0.5;
        if (cover(mid, meet)) {
            l = mid;
        } else {
            r = mid;
            ans = meet;
        }            
    }
    printf("%.10f\n",ans);
}

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<cstdio>
#define LOOP(i,f,t) for(int i=f;i<=t;++i)
int main(){
  LOOP(i,1,9){
    LOOP(j,1,9){
      printf("%dx%d=%d\n",i,j,i*j);
    }
  }
}

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; 
   }
  }
}

C++: #include<iostream>

int main(){

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

C++: #include<bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define RFOR(i,a,b) for (int i=(b)-1;i>=(a);i--)
#define REP(i,n) for (int i=0;i<(n);i++)
#define RREP(i,n) for (int i=(n)-1;i>=0;i--)
typedef long long LL;
int main(){
	REP(i,9){
	    REP(j,9){
	        cout<<i+1<<"x"<<j+1<<"="<<(i+1)*(j+1)<<endl;
	    }
	}
	return(0);
}