#include<iostream>
using namespace std;
int main()
{
int n;
char c;
cin>>n>>c;
int sum=0;
int i;
//i=1 对应奇数 3=2*i+1
//
for(i=1;i>0;i++)
{
sum+=2*i+1;
if(n<sum*2+1)break; //构建 沙漏的*数量 大于我们输入的n 跳出循环
}
// i 记录的是沙漏上半部分的 行数 不包括最后一行
//开始输出上半部分
for(int j=i;j>=1;j--) // 有 i行
{
for(int f=i-j;f>0;f--) cout<<" "; //每行开始 是输入“空格” 判断空格个数。 内循环
// 内循环 肯定与外面的有点关系 所以 f= 总行数 - 第i行
//因为 第2行就是顶层 输入0个空格 而第一行 就是下面一行,输入 1 个空格
for(int k=1;k<=2*j+1;k++) cout<<c; // 开始输入字符 * 的个数 k=1 k<=2*行数 + 1 k++
cout<<endl;
}
//输入中间的一行 自己总结一下
for(int q=1;q<=i;q++) cout<<" ";
cout<<c<<endl;
//下半部分
for(int j=1;j<=i;j++) // 输出 i 行
{
for(int f=i-j;f>=1;f--)cout<<" "; // 输出空格数 与前面的相反 它是先输出 行数多的
for(int k=1;k<=2*j+1;k++)cout<<c;
cout<<endl;
}
return 0;
}