Tencent / cherry-markdown

✨ A Markdown Editor
Other
3.49k stars 410 forks source link

[Bug Report] 关于setValue开启保持光标位置的性能问题 #720

Open joker585 opened 6 months ago

joker585 commented 6 months ago

Prerequisites

Describe the Bug

使用中发现setMarkdown时如果开启保持光标位置功能的话,在某些场景下会导致加载明显变慢,初步定位是这段计算导致的

setValue(content, keepCursor = false) {
    this.editor.storeDocumentScroll();
    if (keepCursor === false) {
      return this.editor.editor.setValue(content);
    }
    const codemirror = this.editor.editor;
    const old = this.getValue();
    const pos = codemirror.getDoc().indexFromPos(codemirror.getCursor());
    const newPos = getPosBydiffs(pos, old, content);
    codemirror.setValue(content);
    const cursor = codemirror.getDoc().posFromIndex(newPos); 
    codemirror.setCursor(cursor);
  }

这里对cursor的计算会占用大量时间,由于我这里是编译后的代码调试没有继续去定位是计算cursor还是前面计算pos导致的性能问题,麻烦看下这里的计算逻辑是否还能进行优化

由于是由生产数据观测到的问题我这里没办法给您提供复现的样例,您可以尝试输入一段较长的内容进行setMarkdown看看是否能够复现

同时我还有一点无关痛痒的疑问,在setMarkdown这个过程中他甚至阻塞了我页面上添加的loading的更新(由react状态控制),这是和渲染机制有关吗

Reproduction Steps

No response

System Information

No response

Contributing

None

lyngai commented 6 months ago

可以在 api playground 编辑代码试试是否能复现。https://tencent.github.io/cherry-markdown/examples/api.html 最好是能提供一下脱敏后结构相似可复现的文本,以便我们排查问题。

joker585 commented 6 months ago

我在用例中交替使用下面两个字符setMarkdown时肉眼可见的观测出了渲染延迟:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a\n###a