Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

slow paredit #2537

Closed
gdanov opened this issue Jan 18, 2021 · 16 comments
Closed

slow paredit #2537

gdanov opened this issue Jan 18, 2021 · 16 comments

Comments

@gdanov
Copy link

gdanov commented Jan 18, 2021

Describe the bug
when using clojure-lsp and paredit, paredit operations are very slow (few seconds)

To Reproduce
emacs 27.1, latest lsp-mode and clojure-lsp, lsp-enable-identation nil, open clojure file, wait for lsp server to initialize and slurp-sexp for example

Which Language Server did you use
clojure-lsp

OS
osx

Error callstack
here is the output of emacs profiler

- command-execute                                                 516  81%
 - call-interactively                                             516  81%
  - funcall-interactively                                         516  81%
   + helm-M-x                                                     417  65%
   - paredit-forward-slurp-sexp                                    99  15%
    - paredit-forward-slurp-into-list                              99  15%
     - indent-region                                               99  15%
      - apply                                                      99  15%
       - ad-Advice-indent-region                                   99  15%
        - #<compiled 0x4346481f>                                   99  15%
         - lsp-format-region                                       99  15%
          - let                                                    99  15%
           - lsp-request                                           96  15%

here is my initialization of lsp-mode

(use-package lsp-mode 
	;;:ensure t
	:quelpa ;(:stable t)
	:hook
	(clojure-mode  . lsp-deferred)
	:bind
	("C-c C-k" . #'cider-load-buffer)
	("C-c C-z" . #'cider-switch-to-repl-buffer)
	("C-c M-z" . #'cider-load-buffer-and-switch-to-repl-buffer)
	("C-c M-n" . 'cider-ns-map)
	;;("C-M-\\" . #'cider-format-buffer)
	;;("C-M-\\" . #'lsp-format-buffer)
	("C-c C-t t" . #'cider-test-run-test)
	("C-c C-t n" . #'cider-test-run-ns-tests)
	:commands
	(lsp lsp-deferred)
	:init
	(setq lsp-log-io nil
				lsp-server-trace nil
				;;lsp-enable-on-type-formatting nil
				;; see http://blog.binchen.org/posts/how-to-speed-up-lsp-mode.html
				gc-cons-threshold (* 100 1024 1024)
				read-process-output-max (* 1024 1024)
				treemacs-space-between-root-nodes nil
				company-idle-delay 0.0
				company-minimum-prefix-length 1
				)
	:config
	(setq lsp-enable-folding nil
				lsp-enable-identation nil
				lsp-enable-snippet nil
				lsp-lens-auto-enable nil
				lsp-enable-completion-at-point t
				lsp-enable-imenu t
				lsp-enable-on-type-formatting nil
				;;lsp-enable-relative-indentation t
				lsp-headerline-breadcrumb-mode nil)
	;; required?
	(dolist (dir '("[/\\\\]resources$"
								 "[/\\\\]\\.lsp"
								 "[/\\\\]\\.clj-kondo"
								 "[/\\\\]\\.cpcache"))
		(push dir lsp-file-watch-ignored)))
@ericdallo
Copy link
Member

I can tell I'm having the same issue but was thinking it's something with my emacs setup, but it seems other people are with this problem too.

@ericdallo
Copy link
Member

Did you confirm this happens even if lsp-mode is disabled?

@ericdallo
Copy link
Member

@yyoncho do you know how lsp-mode can slow down that?
clojure-emacs/cider#2747 (comment)

@gdanov
Copy link
Author

gdanov commented Jan 18, 2021

I had typo in the lsp-enable-indentation var name so I never really disabled lsp identation...whit the correct var name it is disabled and performance is as expected. It's nice there's mitigation. Should I create ticket in clojure-lsp for the performance?

@ericdallo
Copy link
Member

Not sure, is the performance issue related to clojure-lsp? enable lsp-log-io and check the log-io buffer and check how much time is taken between lsp-mode request and response

@yyoncho
Copy link
Member

yyoncho commented Jan 19, 2021

@yyoncho do you know how lsp-mode can slow down that?

AFAICS this is cased by indent-region call which paredit does after slurp.

@gdanov
Copy link
Author

gdanov commented Jan 19, 2021

with lsp-log-io I see message trace in the lsp-log buffer. Don't see log-io buffer ...
Some observations:

  • I play with the expression (:a (:b)) at the bottom of 380 lines .cljc file and see "Applying 19 edits..." each time when barfing and slurping :b even though I don't touch the rest of the file
  • each time the formatting command takes ~500ms
  • created empty file with same basic addition clause 2k times and results are similar (the 19 edits side effect excluded)

here is excerpt from the log



[Trace - 01:06:24 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {
  "diagnostics": [],
  "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc"
}


[Trace - 01:06:24 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 354
}


[Trace - 01:06:24 PM] Sending request 'textDocument/codeAction - (355)'.
Params: {
  "textDocument": {
    "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc"
  },
  "range": {
    "start": {
      "line": 2178,
      "character": 7
    },
    "end": {
      "line": 2178,
      "character": 7
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:24 PM] Received response 'nil - (354)' in 0ms.
Result: null


[Trace - 01:06:24 PM] Received response 'textDocument/codeAction - (355)' in 152ms.
Result: [
  {
    "command": {
      "arguments": [
        "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc",
        2178,
        7
      ],
      "command": "clean-ns",
      "title": "Clean namespace"
    },
    "kind": "source.organizeImports",
    "title": "Clean namespace"
  }
]


[Trace - 01:06:27 PM] Sending notification 'textDocument/didSave'.
Params: {
  "textDocument": {
    "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc",
    "version": 665
  },
  "text": "(ns util.test.zzz)\n\n\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n(+ (+ 1 2 3))\n"
}


[Trace - 01:06:27 PM] Sending notification 'workspace/didChangeWatchedFiles'.
Params: {
  "changes": [
    {
      "type": 1,
      "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc"
    }
  ]
}


[Trace - 01:06:27 PM] Sending notification 'workspace/didChangeWatchedFiles'.
Params: {
  "changes": [
    {
      "type": 2,
      "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc"
    }
  ]
}


[Trace - 01:06:28 PM] Sending request 'textDocument/codeAction - (356)'.
Params: {
  "textDocument": {
    "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc"
  },
  "range": {
    "start": {
      "line": 2136,
      "character": 13
    },
    "end": {
      "line": 2136,
      "character": 13
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:28 PM] Received response 'textDocument/codeAction - (356)' in 128ms.
Result: [
  {
    "command": {
      "arguments": [
        "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc",
        2136,
        13
      ],
      "command": "clean-ns",
      "title": "Clean namespace"
    },
    "kind": "source.organizeImports",
    "title": "Clean namespace"
  }
]


[Trace - 01:06:30 PM] Sending request 'textDocument/codeAction - (357)'.
Params: {
  "textDocument": {
    "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/async.cljc"
  },
  "range": {
    "start": {
      "line": 379,
      "character": 7
    },
    "end": {
      "line": 379,
      "character": 7
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:30 PM] Received response 'textDocument/codeAction - (357)' in 26ms.
Result: [
  {
    "command": {
      "arguments": [
        "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/async.cljc",
        379,
        7
      ],
      "command": "clean-ns",
      "title": "Clean namespace"
    },
    "kind": "source.organizeImports",
    "title": "Clean namespace"
  }
]


[Trace - 01:06:32 PM] Sending request 'textDocument/codeAction - (358)'.
Params: {
  "textDocument": {
    "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/zzz.cljc"
  },
  "range": {
    "start": {
      "line": 2136,
      "character": 13
    },
    "end": {
      "line": 2136,
      "character": 13
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:32 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 358
}


[Trace - 01:06:32 PM] Received response 'nil - (358)' in 0ms.
Result: null



@yyoncho
Copy link
Member

yyoncho commented Jan 19, 2021

I think the log is missing the "textDocument/rangeFormatting" request(s).

@gdanov
Copy link
Author

gdanov commented Jan 19, 2021

hm, weird.
here is log from the original file I was working on. Perceived timing is the same



[Trace - 01:00:22 PM] Sending request 'textDocument/rangeFormatting - (22)'.
Params: {
  "range": {
    "start": {
      "line": 379,
      "character": 6
    },
    "end": {
      "line": 379,
      "character": 8
    }
  },
  "options": {
    "insertSpaces": true,
    "tabSize": 4
  },
  "textDocument": {
    "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/async.cljc"
  }
}


[Trace - 01:00:22 PM] Sending notification 'textDocument/didChange'.
Params: {
  "textDocument": {
    "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/async.cljc",
    "version": 45
  },
  "contentChanges": [
    {
      "text": "(ns util.test.async\n  (:require\n   [portable.use :as u]\n   #?(:clj [clojure.core.async :as a]\n      :cljs [cljs.core.async :as a])\n   #?(:clj [clojure.core.async.impl.protocols]\n      :cljs [cljs.core.async.impl.protocols])\n   #?@(:clj\n       ([cljs.analyzer.api :as ana]\n        [cljs.compiler.api :as comp]))\n   [cljs.test]\n   #?(:clj [clojure.test]))\n  #?(:cljs\n     (:require-macros\n      ;; important!! if missing you'll get \"Can't take value of macro\"\n      [util.test.async :refer [async-ns to<! async is try-expr *do-report chan?\n                               presolv alts! cljs? go <! >!]])))\n\n#?(:clj\n   (defmacro async-ns [sym]\n     (let [[_ sym] sym]\n       (if (:ns &env)\n         (list 'def sym (list 'resolve (list 'quote (symbol \"cljs.core.async\" (name sym)))))\n         (list 'def sym (list 'resolve (list 'quote (symbol \"clojure.core.async\" (name sym)))))))))\n\n#?(:clj\n   (defmacro presolv [clj cljs [_ sym]]\n     (if (:ns &env)\n       `'~(symbol (str cljs) (name sym))\n       `~(symbol (str clj) (name sym)))))\n\n#?(:clj\n   (defmacro go [& body]\n     ;; broken in cljs\n     ;;     `(~(presolv clojure.core.async cljs.core.async 'go) ~@body)\n     (if (:ns &env)\n       `(cljs.core.async/go ~@body)\n       `(clojure.core.async/go ~@body))))\n\n;; TODO hmm, seems broken in cljs\n;;(u/proxy `a/go)\n\n#?(:clj\n   (defmacro <! [& body]\n     (if (:ns &env)\n       `(cljs.core.async/<! ~@body)\n       `(clojure.core.async/<! ~@body))))\n\n;; nope\n;;(u/proxy `a/<!)\n\n#?(:clj\n   (defmacro >! [& body]\n     (if (:ns &env)\n       `(cljs.core.async/>! ~@body)\n       `(clojure.core.async/>! ~@body))))\n\n;; TODO figure out why proxying macros is broken and how to test it\n\n#?(:clj\n   (defmacro alts! [& body]\n     (if (:ns &env)\n       `(cljs.core.async/alts! ~@body)\n       `(clojure.core.async/alts! ~@body))))\n\n(u/proxy `a/chan)\n(u/proxy `a/timeout)\n(u/proxy `a/take!)\n\n#?(:clj\n   (defmacro cljs? []\n     `~(some? (:ns &env))))\n\n#?(:clj\n   (defmacro chan? [thing]\n     (if (:ns &env)\n       `(try\n          (satisfies? cljs.core.async.impl.protocols/ReadPort ~thing)\n          (catch :default t# (println t#) false))\n       `(try\n          (satisfies? clojure.core.async.impl.protocols/ReadPort ~thing)\n          (catch Throwable t# (println t#) false)))))\n\n#?(:clj\n   (defmacro async [& body]\n     (if (:ns &env)\n       (let [body (map\n                   (fn [b]\n                     `(let [res# ~b]\n                        (if (chan? res#)\n                          (to<! res#)\n                          res#)))\n                    body)]\n         `(cljs.test/async done#\n            (-> (cljs.core.async/go\n                  ~@body)\n              ;; TODO timeout\n              ;; the return value doesn't matter, right?\n              (cljs.core.async/take! done# true))))\n       ;; clj version\n       (let [body (map\n                   (fn [b]\n                     `(let [res# ~b]\n                         ;; just waits for the embedded blocks to finish. no result processing!\n                        (if (chan? res#)\n                          (to<! res#)\n                          res#)))\n                    body)]\n         ;; TODO timeout\n         ;; the return value doesn't matter, right?\n         `(clojure.core.async/<!!\n           (clojure.core.async/go\n             ~@body))))))\n\n#?(:clj\n   (defn *do-report [res]\n     (clojure.test/do-report res))\n\n   :cljs\n   (defn *do-report [res]\n     (cljs.test/do-report res)))\n\n#?(:clj\n   (do\n\n     (defn assert-predicate\n       \"Returns generic assertion code for any functional predicate.  The\n  'expected' argument to 'report' will contains the original form, the\n  'actual' argument will contain the form with all its sub-forms\n  evaluated.  If the predicate returns false, the 'actual' form will\n  be wrapped in (not...).\"\n       {:added \"1.1\"}\n       [msg form]\n       ;;(println \"p-->\" form)\n       (let [pred (first form)\n             args (rest form)]\n         `(let [values# (list ~@args)\n                result# (loop [r# (apply ~pred values#)]\n                          ;;(println \"p-->>\" r#)\n                          (if (chan? r#) (recur (to<! r#)) r#))]\n\n            (if (and result# (not= ::timeout result#))\n              (*do-report\n               {:type :pass, :message ~msg,\n                :expected '~form, :actual (cons '~pred values#)})\n              (*do-report\n               {:type :fail, :message ~msg,\n                :expected '~form, :actual (list '~'not (cons '~pred values#))}))\n            result#)))\n\n     (defn assert-any\n       \"Returns generic assertion code for any test, including macros, Java\n  method calls, or isolated symbols.\"\n       {:added \"1.1\"}\n       [msg form]\n       ;;(println \"any-->\" form)\n       `(let [v# ~form\n              f# (or (-> ~(meta form) ::form) '~form)\n              value# (loop [r# v#]\n                       ;;(println \"v-->\" r#)\n                       (if (chan? r#)\n                         (recur (to<! r#))\n                         r#))]\n          (if (and value# (not= ::timeout value#))\n            (*do-report\n             {:type :pass, :message ~msg,\n              :expected f#, :actual value#})\n            (*do-report\n             {:type :fail, :message ~msg,\n              :expected f#, :actual value#}))\n          value#))))\n#?(:clj\n   (do\n     (defmethod clojure.test/assert-expr ::default\n       [msg [_ form]]\n       (if (and (sequential? form) (clojure.test/function? (first form)))\n         (assert-predicate msg form)\n         (assert-any msg form)))\n\n     ;; must be in the clj compile phase!\n     (defmethod cljs.test/assert-expr ::default\n       [_ msg [_ form]]\n       (if (and (sequential? form) (fn? (first form)))\n         (assert-predicate msg form)\n         (assert-any msg form)))))\n\n#?(:clj\n   (defmacro try-expr\n     \"Used by the 'is' macro to catch unexpected exceptions.\n  You don't call this.\"\n\n     ;; Do the same as the original function, but resolve recursively\n     ;; asserts that return channel. When the assertion returns channel,\n     ;; read from it to make sure we've waited for it to finish. That's\n     ;; all\n\n     ;; Intentionally NOT wrapped in async/go block. This way mistakes\n     ;; where I forget to read from `(is ...)` with chonnel inside\n     ;; won't go unnoticed, but async will complain. Plus one less\n     ;; channel\n\n     [msg form]\n     (when (seq? form)\n       #_(println \"<<<\" (first form)\n                  ((-> clojure.test/assert-expr methods keys set) (first form))))\n     (if (:ns &env)\n       (let [arg (if (and (seq? form)\n                       ((-> cljs.test/assert-expr methods keys set) (first form)))\n                   form\n                   (list ::default form))]\n         `(try\n            (let [res# ~(cljs.test/assert-expr &env msg arg)]\n              res#)\n            (catch :default t#\n              (cljs.test/do-report\n               {:type :error, :message ~msg,\n                :expected '~form, :actual t#}))))\n       ;; clj version\n       (let [arg (if (and (seq? form)\n                       ((-> clojure.test/assert-expr methods keys set) (first form)))\n                   form\n                   (list ::default form))]\n         `(try\n            (let [res# ~(clojure.test/assert-expr msg arg)]\n              res#)\n            ;; what ^^ returns does not affect the reported test result\n            (catch Throwable t#\n              (clojure.test/do-report\n               {:type :error, :message ~msg,\n                :expected '~form, :actual t#})))))))\n\n#?(:clj\n   (defmacro is\n     ([form] `(is ~form nil))\n     ([form msg] `(try-expr ~msg ~form))))\n\n(defn to-chan\n  \"channel with timeout and buffer >1\"\n  ([] (to-chan {}))\n  ([{:keys [ms return-v]\n     :or {ms 5000 return-v ::timeout}}]\n   (let [in (a/chan 10)\n         _  (a/go\n              (a/<! (a/timeout ms))\n              (a/>! in return-v)\n              (a/close! in))]\n     in)))\n\n(defn *to<!\n  \"Reads from chanel with timeout. Returns chanel, unlike the macro\"\n  [c]\n  (a/go\n    (let [[v oc] (a/alts! [c (a/timeout 100)] :priority true)]\n      (if (= c oc) v ::timeout))))\n\n#?(:clj\n   (defmacro to<!\n     \"simulates almost non-blocking read. MUST BE CALLED IN ASYNC/GO BLOCK\"\n     ;; kinda lost track why I need this macro\n     [c]\n     ;; the timeout here must be short, absolutely no use if it's long\n     ;; when long we could end up with the channel closed\n     `(let [[v# oc#] (alts! [~c (timeout 100)] :priority true)]\n        (if (= ~c oc#) v# `~::timeout))))\n\n(defn stub\n  \"returns stub that invokes the function and can be checked\"\n  [fun]\n  (let [out (to-chan)\n        in  (to-chan)]\n    (vary-meta\n     (fn invoke-stub [& args]\n        ;;(println \"stub <<\" args)\n       (try\n         (let [res (apply fun args)]\n            ;; TODO don't use go\n           (a/go\n             (a/>! in args)\n              ;; to box nil\n             (a/>! out [res]))\n           res)\n         (catch #?(:clj Throwable :cljs :default) t\n           (a/go\n             (a/>! out (ex-info \"\" {} t))\n             (a/>! in (ex-info \"\" {} t))))))\n      merge\n      {::out-chan  out\n       ::args-chan in})))\n\n(defn invoked?\n  \"returns channel\"\n  [stub]\n  (assert (-> stub meta ::args-chan) \"input is not a mock\")\n  (a/go\n    (let [res (-> stub meta ::args-chan to<!)]\n      (>! (-> stub meta ::args-chan) res)\n      (not= ::timeout res))))\n\n(defn inv-args\n  \"returns channel\"\n  [stub]\n  (assert (-> stub meta ::args-chan) \"input is not a mock\")\n  (a/go\n    (let [res (-> stub meta ::args-chan to<!)]\n      (>! (-> stub meta ::args-chan) res)\n      res)))\n\n(defn inv-res\n  \"returns channel\"\n  [stub]\n  (assert (-> stub meta ::args-chan) \"input is not a mock\")\n  (a/go\n    (let [res (-> stub meta ::out-chan to<! first)]\n      (>! (-> stub meta ::out-chan) [res])\n      res)))\n\n#_(comment\n    ;; the defassert and invoked? works but I don't like the ergonomics.\n    ;; 1. using `invoked?` in another namespace causes warnings and there's no way to declare or import it. ugly.\n    ;; 2. assert-expr is not composable. so `(not (invoked? ...))` does not work. channels are orthogonal to tihs problem\n    ;; 3. having `invoked?` is plain predicate + adding channel support to `not` solves all above, code is simpler so...why bother?\n\n    #?(:clj\n       (defmacro defassert\n         \"`body` is form that returns boolean or chanel and takes one argument -- the rest of the asserted form\"\n         [id [input-name & _] & body]\n         ;; cljs\n         (eval\n          `(defmethod cljs.test/assert-expr\n             '~id\n             [_# msg# input-form#]\n             (let [~input-name (rest input-form#)\n                   b# ~@body]\n               (assert-any msg# (vary-meta b# merge {::form `'~input-form#})))))\n         ;; clj\n         (eval\n          `(defmethod clojure.test/assert-expr\n             '~id\n             [msg# input-form#]\n             (let [~input-name (rest input-form#)\n                   b# ~@body]\n               (assert-any msg# (vary-meta b# merge {::form `'~input-form#})))))\n         ;; return\n         nil))\n\n    #?(:clj\n       (defassert invoked? [[input-form]]\n                  `(-> ~input-form meta ::args-chan to<!)))\n\n    #?(:clj\n       (defassert not-invoked? [[input-form]]\n                  `(-> ~input-form meta ::args-chan to<! (= ::timeout)))))\n\n#?(:clj\n   (do ;; have to do this because vanilla `not` can't properly negate channels\n     (defmethod clojure.test/assert-expr\n       'not\n       [msg input-form]\n       (assert-any msg\n         (vary-meta\n          `(let [v# (do ~@(rest input-form))]\n             (if-not (chan? v#)\n               (not v#)\n               (let [ret# (to<! v#)]\n                 (or (= ::timeout ret#) (not ret#)))))\n           merge {::form `'~input-form})))\n     ;;\n     (defmethod cljs.test/assert-expr\n       'not\n       [_ msg input-form]\n       (assert-any msg\n         (vary-meta `(let [v# (do ~@(rest input-form))]\n                       (if-not (chan? v#)\n                         (not v#)\n                         (let [ret# (to<! v#)]\n                           (or (= ::timeout ret#) (not ret#)))))\n           merge {::form `'~input-form})))))\n\n\n(:a ():b)\n"
    }
  ]
}


[Trace - 01:00:23 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {
  "diagnostics": [
    {
      "message": "Unused declaration: *to<!",
      "source": "clojure-lsp",
      "code": "unused-public",
      "severity": 2,
      "range": {
        "end": {
          "character": 11,
          "line": 248
        },
        "start": {
          "character": 6,
          "line": 248
        }
      }
    },
    {
      "message": "Unused declaration: invoke-stub",
      "source": "clojure-lsp",
      "code": "unused",
      "severity": 2,
      "range": {
        "end": {
          "character": 20,
          "line": 271
        },
        "start": {
          "character": 9,
          "line": 271
        }
      }
    },
    {
      "message": "Unused declaration: invoke-stub",
      "source": "clojure-lsp",
      "code": "unused",
      "severity": 2,
      "range": {
        "end": {
          "character": 20,
          "line": 271
        },
        "start": {
          "character": 9,
          "line": 271
        }
      }
    },
    {
      "message": "Unused declaration: defassert",
      "source": "clojure-lsp",
      "code": "unused",
      "severity": 2,
      "range": {
        "end": {
          "character": 26,
          "line": 323
        },
        "start": {
          "character": 17,
          "line": 323
        }
      }
    },
    {
      "message": "namespace cljs.analyzer.api is required but never used",
      "source": "clj-kondo",
      "code": "unused-namespace",
      "severity": 2,
      "range": {
        "end": {
          "character": 26,
          "line": 8
        },
        "start": {
          "character": 9,
          "line": 8
        }
      }
    },
    {
      "message": "namespace cljs.compiler.api is required but never used",
      "source": "clj-kondo",
      "code": "unused-namespace",
      "severity": 2,
      "range": {
        "end": {
          "character": 26,
          "line": 9
        },
        "start": {
          "character": 9,
          "line": 9
        }
      }
    },
    {
      "message": "Missing body in when",
      "source": "clj-kondo",
      "code": "missing-body-in-when",
      "severity": 2,
      "range": {
        "end": {
          "character": 5,
          "line": 202
        },
        "start": {
          "character": 5,
          "line": 202
        }
      }
    },
    {
      "message": "Shadowed var: util.test.async/stub",
      "source": "clj-kondo",
      "code": "shadowed-var",
      "severity": 3,
      "range": {
        "end": {
          "character": 7,
          "line": 291
        },
        "start": {
          "character": 3,
          "line": 291
        }
      }
    },
    {
      "message": "Shadowed var: util.test.async/stub",
      "source": "clj-kondo",
      "code": "shadowed-var",
      "severity": 3,
      "range": {
        "end": {
          "character": 7,
          "line": 300
        },
        "start": {
          "character": 3,
          "line": 300
        }
      }
    },
    {
      "message": "Shadowed var: util.test.async/stub",
      "source": "clj-kondo",
      "code": "shadowed-var",
      "severity": 3,
      "range": {
        "end": {
          "character": 7,
          "line": 309
        },
        "start": {
          "character": 3,
          "line": 309
        }
      }
    }
  ],
  "uri": "file:///Users/gdanov/work/playground/betting/system-bet-calc/test/shared/util/test/async.cljc"
}


[Trace - 01:00:26 PM] Received response 'textDocument/rangeFormatting - (22)' in 607ms.
Result: [
  {
    "newText": "(ns util.test.async\n  (:require\n   [portable.use :as u]\n   #?(:clj [clojure.core.async :as a]\n      :cljs [cljs.core.async :as a])\n   #?(:clj [clojure.core.async.impl.protocols]\n      :cljs [cljs.core.async.impl.protocols])\n   #?@(:clj\n       ([cljs.analyzer.api :as ana]\n        [cljs.compiler.api :as comp]))\n   [cljs.test]\n   #?(:clj [clojure.test]))\n  #?(:cljs\n     (:require-macros\n      ;; important!! if missing you'll get \"Can't take value of macro\"\n      [util.test.async :refer [async-ns to<! async is try-expr *do-report chan?\n                               presolv alts! cljs? go <! >!]])))",
    "range": {
      "end": {
        "character": 64,
        "line": 16
      },
      "start": {
        "character": 0,
        "line": 0
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro async-ns [sym]\n     (let [[_ sym] sym]\n       (if (:ns &env)\n         (list 'def sym (list 'resolve (list 'quote (symbol \"cljs.core.async\" (name sym)))))\n         (list 'def sym (list 'resolve (list 'quote (symbol \"clojure.core.async\" (name sym)))))))))",
    "range": {
      "end": {
        "character": 99,
        "line": 23
      },
      "start": {
        "character": 0,
        "line": 18
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro presolv [clj cljs [_ sym]]\n     (if (:ns &env)\n       `'~(symbol (str cljs) (name sym))\n       `~(symbol (str clj) (name sym)))))",
    "range": {
      "end": {
        "character": 41,
        "line": 29
      },
      "start": {
        "character": 0,
        "line": 25
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro go [& body]\n     ;; broken in cljs\n     ;;     `(~(presolv clojure.core.async cljs.core.async 'go) ~@body)\n     (if (:ns &env)\n       `(cljs.core.async/go ~@body)\n       `(clojure.core.async/go ~@body))))",
    "range": {
      "end": {
        "character": 41,
        "line": 37
      },
      "start": {
        "character": 0,
        "line": 31
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro <! [& body]\n     (if (:ns &env)\n       `(cljs.core.async/<! ~@body)\n       `(clojure.core.async/<! ~@body))))",
    "range": {
      "end": {
        "character": 41,
        "line": 46
      },
      "start": {
        "character": 0,
        "line": 42
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro >! [& body]\n     (if (:ns &env)\n       `(cljs.core.async/>! ~@body)\n       `(clojure.core.async/>! ~@body))))",
    "range": {
      "end": {
        "character": 41,
        "line": 55
      },
      "start": {
        "character": 0,
        "line": 51
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro alts! [& body]\n     (if (:ns &env)\n       `(cljs.core.async/alts! ~@body)\n       `(clojure.core.async/alts! ~@body))))",
    "range": {
      "end": {
        "character": 44,
        "line": 63
      },
      "start": {
        "character": 0,
        "line": 59
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro cljs? []\n     `~(some? (:ns &env))))",
    "range": {
      "end": {
        "character": 27,
        "line": 71
      },
      "start": {
        "character": 0,
        "line": 69
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro chan? [thing]\n     (if (:ns &env)\n       `(try\n          (satisfies? cljs.core.async.impl.protocols/ReadPort ~thing)\n          (catch :default t# (println t#) false))\n       `(try\n          (satisfies? clojure.core.async.impl.protocols/ReadPort ~thing)\n          (catch Throwable t# (println t#) false)))))",
    "range": {
      "end": {
        "character": 53,
        "line": 81
      },
      "start": {
        "character": 0,
        "line": 73
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro async [& body]\n     (if (:ns &env)\n       (let [body (map\n                   (fn [b]\n                     `(let [res# ~b]\n                        (if (chan? res#)\n                          (to<! res#)\n                          res#)))\n                    body)]\n         `(cljs.test/async done#\n            (-> (cljs.core.async/go\n                  ~@body)\n              ;; TODO timeout\n              ;; the return value doesn't matter, right?\n              (cljs.core.async/take! done# true))))\n       ;; clj version\n       (let [body (map\n                   (fn [b]\n                     `(let [res# ~b]\n                         ;; just waits for the embedded blocks to finish. no result processing!\n                        (if (chan? res#)\n                          (to<! res#)\n                          res#)))\n                    body)]\n         ;; TODO timeout\n         ;; the return value doesn't matter, right?\n         `(clojure.core.async/<!!\n           (clojure.core.async/go\n             ~@body))))))",
    "range": {
      "end": {
        "character": 25,
        "line": 112
      },
      "start": {
        "character": 0,
        "line": 83
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defn *do-report [res]\n     (clojure.test/do-report res))\n\n   :cljs\n   (defn *do-report [res]\n     (cljs.test/do-report res)))",
    "range": {
      "end": {
        "character": 32,
        "line": 120
      },
      "start": {
        "character": 0,
        "line": 114
      }
    }
  },
  {
    "newText": "#?(:clj\n   (do\n\n     (defn assert-predicate\n       \"Returns generic assertion code for any functional predicate.  The\n  'expected' argument to 'report' will contains the original form, the\n  'actual' argument will contain the form with all its sub-forms\n  evaluated.  If the predicate returns false, the 'actual' form will\n  be wrapped in (not...).\"\n       {:added \"1.1\"}\n       [msg form]\n       ;;(println \"p-->\" form)\n       (let [pred (first form)\n             args (rest form)]\n         `(let [values# (list ~@args)\n                result# (loop [r# (apply ~pred values#)]\n                          ;;(println \"p-->>\" r#)\n                          (if (chan? r#) (recur (to<! r#)) r#))]\n\n            (if (and result# (not= ::timeout result#))\n              (*do-report\n               {:type :pass, :message ~msg,\n                :expected '~form, :actual (cons '~pred values#)})\n              (*do-report\n               {:type :fail, :message ~msg,\n                :expected '~form, :actual (list '~'not (cons '~pred values#))}))\n            result#)))\n\n     (defn assert-any\n       \"Returns generic assertion code for any test, including macros, Java\n  method calls, or isolated symbols.\"\n       {:added \"1.1\"}\n       [msg form]\n       ;;(println \"any-->\" form)\n       `(let [v# ~form\n              f# (or (-> ~(meta form) ::form) '~form)\n              value# (loop [r# v#]\n                       ;;(println \"v-->\" r#)\n                       (if (chan? r#)\n                         (recur (to<! r#))\n                         r#))]\n          (if (and value# (not= ::timeout value#))\n            (*do-report\n             {:type :pass, :message ~msg,\n              :expected f#, :actual value#})\n            (*do-report\n             {:type :fail, :message ~msg,\n              :expected f#, :actual value#}))\n          value#))))",
    "range": {
      "end": {
        "character": 20,
        "line": 170
      },
      "start": {
        "character": 0,
        "line": 122
      }
    }
  },
  {
    "newText": "#?(:clj\n   (do\n     (defmethod clojure.test/assert-expr ::default\n       [msg [_ form]]\n       (if (and (sequential? form) (clojure.test/function? (first form)))\n         (assert-predicate msg form)\n         (assert-any msg form)))\n\n     ;; must be in the clj compile phase!\n     (defmethod cljs.test/assert-expr ::default\n       [_ msg [_ form]]\n       (if (and (sequential? form) (fn? (first form)))\n         (assert-predicate msg form)\n         (assert-any msg form)))))",
    "range": {
      "end": {
        "character": 34,
        "line": 184
      },
      "start": {
        "character": 0,
        "line": 171
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro try-expr\n     \"Used by the 'is' macro to catch unexpected exceptions.\n  You don't call this.\"\n\n     ;; Do the same as the original function, but resolve recursively\n     ;; asserts that return channel. When the assertion returns channel,\n     ;; read from it to make sure we've waited for it to finish. That's\n     ;; all\n\n     ;; Intentionally NOT wrapped in async/go block. This way mistakes\n     ;; where I forget to read from `(is ...)` with chonnel inside\n     ;; won't go unnoticed, but async will complain. Plus one less\n     ;; channel\n\n     [msg form]\n     (when (seq? form)\n       #_(println \"<<<\" (first form)\n                  ((-> clojure.test/assert-expr methods keys set) (first form))))\n     (if (:ns &env)\n       (let [arg (if (and (seq? form)\n                       ((-> cljs.test/assert-expr methods keys set) (first form)))\n                   form\n                   (list ::default form))]\n         `(try\n            (let [res# ~(cljs.test/assert-expr &env msg arg)]\n              res#)\n            (catch :default t#\n              (cljs.test/do-report\n               {:type :error, :message ~msg,\n                :expected '~form, :actual t#}))))\n       ;; clj version\n       (let [arg (if (and (seq? form)\n                       ((-> clojure.test/assert-expr methods keys set) (first form)))\n                   form\n                   (list ::default form))]\n         `(try\n            (let [res# ~(clojure.test/assert-expr msg arg)]\n              res#)\n            ;; what ^^ returns does not affect the reported test result\n            (catch Throwable t#\n              (clojure.test/do-report\n               {:type :error, :message ~msg,\n                :expected '~form, :actual t#})))))))",
    "range": {
      "end": {
        "character": 52,
        "line": 229
      },
      "start": {
        "character": 0,
        "line": 186
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro is\n     ([form] `(is ~form nil))\n     ([form msg] `(try-expr ~msg ~form))))",
    "range": {
      "end": {
        "character": 42,
        "line": 234
      },
      "start": {
        "character": 0,
        "line": 231
      }
    }
  },
  {
    "newText": "#?(:clj\n   (defmacro to<!\n     \"simulates almost non-blocking read. MUST BE CALLED IN ASYNC/GO BLOCK\"\n     ;; kinda lost track why I need this macro\n     [c]\n     ;; the timeout here must be short, absolutely no use if it's long\n     ;; when long we could end up with the channel closed\n     `(let [[v# oc#] (alts! [~c (timeout 100)] :priority true)]\n        (if (= ~c oc#) v# `~::timeout))))",
    "range": {
      "end": {
        "character": 41,
        "line": 263
      },
      "start": {
        "character": 0,
        "line": 255
      }
    }
  },
  {
    "newText": "(defn stub\n  \"returns stub that invokes the function and can be checked\"\n  [fun]\n  (let [out (to-chan)\n        in  (to-chan)]\n    (vary-meta\n     (fn invoke-stub [& args]\n        ;;(println \"stub <<\" args)\n       (try\n         (let [res (apply fun args)]\n            ;; TODO don't use go\n           (a/go\n             (a/>! in args)\n              ;; to box nil\n             (a/>! out [res]))\n           res)\n         (catch #?(:clj Throwable :cljs :default) t\n           (a/go\n             (a/>! out (ex-info \"\" {} t))\n             (a/>! in (ex-info \"\" {} t))))))\n      merge\n      {::out-chan  out\n       ::args-chan in})))",
    "range": {
      "end": {
        "character": 25,
        "line": 287
      },
      "start": {
        "character": 0,
        "line": 265
      }
    }
  },
  {
    "newText": "#_(comment\n    ;; the defassert and invoked? works but I don't like the ergonomics.\n    ;; 1. using `invoked?` in another namespace causes warnings and there's no way to declare or import it. ugly.\n    ;; 2. assert-expr is not composable. so `(not (invoked? ...))` does not work. channels are orthogonal to tihs problem\n    ;; 3. having `invoked?` is plain predicate + adding channel support to `not` solves all above, code is simpler so...why bother?\n\n    #?(:clj\n       (defmacro defassert\n         \"`body` is form that returns boolean or chanel and takes one argument -- the rest of the asserted form\"\n         [id [input-name & _] & body]\n         ;; cljs\n         (eval\n          `(defmethod cljs.test/assert-expr\n             '~id\n             [_# msg# input-form#]\n             (let [~input-name (rest input-form#)\n                   b# ~@body]\n               (assert-any msg# (vary-meta b# merge {::form `'~input-form#})))))\n         ;; clj\n         (eval\n          `(defmethod clojure.test/assert-expr\n             '~id\n             [msg# input-form#]\n             (let [~input-name (rest input-form#)\n                   b# ~@body]\n               (assert-any msg# (vary-meta b# merge {::form `'~input-form#})))))\n         ;; return\n         nil))\n\n    #?(:clj\n       (defassert invoked? [[input-form]]\n                  `(-> ~input-form meta ::args-chan to<!)))\n\n    #?(:clj\n       (defassert not-invoked? [[input-form]]\n                  `(-> ~input-form meta ::args-chan to<! (= ::timeout)))))",
    "range": {
      "end": {
        "character": 74,
        "line": 351
      },
      "start": {
        "character": 0,
        "line": 316
      }
    }
  },
  {
    "newText": "#?(:clj\n   (do ;; have to do this because vanilla `not` can't properly negate channels\n     (defmethod clojure.test/assert-expr\n       'not\n       [msg input-form]\n       (assert-any msg\n         (vary-meta\n          `(let [v# (do ~@(rest input-form))]\n             (if-not (chan? v#)\n               (not v#)\n               (let [ret# (to<! v#)]\n                 (or (= ::timeout ret#) (not ret#)))))\n           merge {::form `'~input-form})))\n     ;;\n     (defmethod cljs.test/assert-expr\n       'not\n       [_ msg input-form]\n       (assert-any msg\n         (vary-meta `(let [v# (do ~@(rest input-form))]\n                       (if-not (chan? v#)\n                         (not v#)\n                         (let [ret# (to<! v#)]\n                           (or (= ::timeout ret#) (not ret#)))))\n           merge {::form `'~input-form})))))",
    "range": {
      "end": {
        "character": 44,
        "line": 376
      },
      "start": {
        "character": 0,
        "line": 353
      }
    }
  }
]

@yyoncho
Copy link
Member

yyoncho commented Jan 19, 2021

AFAICS the issue is in clojure-lsp Emacs/lsp-mode tries to format a small region but the server sends reformatting of all(?) forms.

@ericdallo
Copy link
Member

Hum, the server seems to be sending the range correctly: https://github.com/clojure-lsp/clojure-lsp/blob/master/src/clojure_lsp/handlers.clj#L362

@ericdallo
Copy link
Member

@gdanov do you have a sample file where we can test that?

@gdanov
Copy link
Author

gdanov commented Jan 19, 2021

anything basic and big enough works. No idea if .clj vs .cljc makes difference. here is basic file that reproduces the performance problem (when ~2k lines).

(ns util.test.zzz)


(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))
(+ (+ 1 2 3))

@ericdallo
Copy link
Member

Ok, thanks, I'll look on clojure-lsp side after we merge this huge refactor that we are WIP this week clojure-lsp/clojure-lsp#261
Would you mind opening an issue linking this one on clojure-lsp to help track that?

@gdanov
Copy link
Author

gdanov commented Jan 21, 2021

Ok, thanks, I'll look on clojure-lsp side after we merge this huge refactor that we are WIP this week clojure-lsp/clojure-lsp#261
Would you mind opening an issue linking this one on clojure-lsp to help track that?

wow, that's serious work. issue created as you requested

@yyoncho
Copy link
Member

yyoncho commented Jan 27, 2021

I am closing this since it seems like there is nothing to do on lsp-mdoe side.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants