Apply to my task
arXiv:2604.07737 ★ 83 Apr 9, 2026

SepSeq: Formatting Number Sequences with Line Breaks for Accurate Calculations

Key result

Ask the model to “think step by step” and the result gets worse. CoT doesn’t help when the problem isn’t logic: 300 comma-separated numbers in a row are indistinguishable, and attention just spreads across the whole series. SepSeq lets you work precisely with long number series — finding maximums, growth streaks, anomalies — with zero fine-tuning. The trick: break the numbers into lines of 5–10 before you even send the prompt — the attention mechanism latches onto the breaks like anchors, and each block gets processed accurately. +35% accuracy on average, and it even uses fewer tokens than unformatted data.

01

TL;DR

Long runs of numbers break LLMs not because the models lack brains, but because their attention gets “smeared” across hundreds of look-alike numbers. The fix is dead simple: insert a line break every N numbers. That is SepSeq — a way to structure input data with zero fine-tuning.

When a model sees 300 comma-separated numbers in a row, it loses focus: every number looks like every other, and the attention mechanism spreads its weights evenly across the whole sequence instead of zeroing in on the parts that matter. The result: ask it for the maximum of 300 values and it gets it wrong half the time. And adding Chain-of-Thought (“think step by step”) makes things worse, not better — the problem isn’t logic, it’s that the model simply can’t “see” the data.

Line breaks create “attention anchors” — special points that pull the model’s focus toward them. A long sequence turns into a series of short segments, and the model handles each one precisely. Accuracy on numeric tasks goes up by 35% on average, and token usage actually drops.

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

02

Method Blueprint

The method applies in exactly one place — when you paste data into the prompt.

WITHOUT SepSeq (bad):
1.2, 1.5, 1.8, 2.1, 1.9, 2.3, 1.7, 2.0, 1.8, 2.2, 1.6, 2.4, ...

WITH SepSeq (good):
1.2, 1.5, 1.8, 2.1, 1.9
2.3, 1.7, 2.0, 1.8, 2.2
1.6, 2.4, ...
STEP 1: Take the number sequence
STEP 2: Split it into blocks of k numbers (k = 5–10 for long series)
STEP 3: Insert line breaks between the blocks
STEP 4: Paste the formatted data into the prompt as usual

All of this happens by hand before you send the prompt. The model needs no extra instructions.

03

Example in Action

Task: You’re a financial analyst. A client wants you to break down the revenue trend of their Amazon store over the last six months (180 days) and find growth streaks of 3+ days in a row.

Prompt without SepSeq (bad version):

Here is revenue for 180 days, in thousands of dollars:

45, 52, 38, 61, 49, 44, 67, 71, 68, 55, 42, 38, 77, 82, 91, 88, 79, 65, 
43, 41, 59, 63, 71, 74, 68, 55, 44, 83, 91, 95, 88, 76, 61, 48, 45, 52...
[140+ more numbers in a row]

Find all growth streaks of 3 or more days in a row.

Prompt with SepSeq (working version):

Here is revenue for 180 days, in thousands of dollars (each line = 5 days):

45, 52, 38, 61, 49
44, 67, 71, 68, 55
42, 38, 77, 82, 91
88, 79, 65, 43, 41
59, 63, 71, 74, 68
55, 44, 83, 91, 95
88, 76, 61, 48, 45
...and so on

Day 1 = the first number on the first line.

Find all growth streaks of 3 or more days in a row. List the day numbers and values.

Result:

The model walks through the entire sequence with high accuracy, correctly compares neighboring values and returns a list of streaks with specific day numbers and values. Without formatting it will most likely miss some streaks or mix up positions; with formatting, accuracy jumps sharply on long series.

04

Why It Works

LLMs’ weak spot with numbers. Regular text is rich in meaning — the word “cat” looks nothing like “thunderstorm.” Numbers in a series look alike: 1.87 and 1.92 and 1.84. When there are 300 of them in a row, the attention mechanism doesn’t know where to look and bets on everything at once — which means on nothing in particular. Focus gets “smeared.”

How line breaks exploit this. The model treats \n (a line break) as a meaningful separator — stronger than a comma or a space. A line break pulls attention toward itself. When an “anchor” like that sits every 5 numbers, the model processes the sequence as a series of small blocks — and inside each block the focus is sharp.

Control knobs: - Segment size (k) — the longer the series and the harder the task, the smaller k should be. For series of 30–100 numbers try k=10, for 100–500 use k=5 - Separator — \n works best; a double break \n\n creates harder boundaries between blocks if you need even crisper segmentation - Data caption — add “each line = N values” or “day 1 = the first number” so the model understands the structure explicitly

05

Prompt Template

Here is {data_name} for {period} ({total_count} values).
Each line = {k} {unit}:

{number_1}, {number_2}, ..., {number_k}
{number_k+1}, {number_k+2}, ..., {number_2k}
...

{numbering_or_position_note}

{question_or_task}

Placeholders: - {data_name} — “store revenue,” “dollar exchange rate,” “temperature,” “website traffic” - {k} — segment size: 5 for long series (100+), 10 for shorter ones (30–100) - {numbering} — optional: “Day 1 = the first number” or “Record 1 = line 1, position 1” - {question} — a concrete task: find the maximum, count streaks, flag anomalies


🚀 Quick start — paste into the chat:

Help me apply the SepSeq method to format numeric data. 
My task: {describe the task}. 
Ask me questions so you can format the sequence correctly.

[paste the template above]

The LLM will ask about data volume and task type to pick the right segment size. It will take the pattern from the template and adapt it to your numbers.

06

Limitations

⚠️ Complex reasoning over numbers: If the task isn’t just finding a number but building a complex chain of reasoning across the whole series at once (say, “find all patterns correlated with X”), the gain is minimal — about +1%.

⚠️ Mixed data (numbers + text): The method is built for purely numeric sequences. If numbers are interleaved with text, the effect is weaker.

⚠️ Short series (under 30 numbers): No point in formatting. The gain is negligible because attention doesn’t have time to scatter anyway.

⚠️ Not a substitute for data preprocessing: If your data has outliers or gaps, or needs normalizing, clean it first, then format it with SepSeq.

07

How They Tested It

The idea was simple: take 9 different models (from the small Qwen3-8B up to Claude 3.7 Sonnet, Gemini 2.5 Pro and GPT-4) and check whether plain formatting helps where fancy techniques fail. The researchers compared four approaches: ordinary commas, Chain-of-Thought (“think step by step”), a single example in the prompt (ICL), and SepSeq with line breaks.

The most surprising result: CoT and ICL made accuracy worse — from 51.6% down to 49%. That’s a strong insight: the problem isn’t that the model “thinks poorly,” it’s that it literally “can’t see” the data in long number series. Adding an example or telling it to think step by step doesn’t help when attention is already scattered across 300 look-alike numbers.

On real-world data — stock prices and weather series — SepSeq delivered gains of +100% and +61% respectively. Especially impressive: the method cut token usage by 16.4% at the same time, because line breaks replace the spaces between numbers rather than being added on top.

08

Original from the Paper

Vanilla format:
"... How many 1's in [0 1 0 1 0 1 0 0 0] ..."

SepSeq format:
"... How many 1's in [0 1 0 1\n0 1 0 0\n0] ..."

Context: The authors show the smallest possible format change — commas between numbers are replaced with \n every k positions. The visual difference is trivial. The difference in accuracy is huge.

09

Adaptations and Extrapolations

💡 Adaptation for time series with dates:

Here are daily sales (in $K) for January–March 2025:

January (1–10): 45, 52, 38, 61, 49, 44, 67, 71, 68, 55
January (11–20): 42, 38, 77, 82, 91, 88, 79, 65, 43, 41
January (21–31): 59, 63, 71, 74, 68, 55, 44, 83, 91, 95, 88
February (1–10): 76, 61, 48, 45, 52, 58, 63, 69, 72, 66
...

Find the month with the highest volatility (max–min spread).

Blocking by calendar units — 10 values with an explicit date — lets the model use a positional anchor, not just a numeric one.


🔧 Technique: double break as a hard boundary → isolating periods

When you need to compare across periods (week vs. week) rather than search within one series:

Week 1:
120, 135, 118, 142, 155, 148, 161

Week 2:
98, 112, 127, 134, 119, 143, 156

Compare the average value by week. Which week showed stronger growth toward the end?

\n\n between blocks creates a stronger barrier than a single break — handy when segments need to be isolated from each other.


🔧 Technique: named positions → precise references

Position 1–5:   23.4, 24.1, 23.8, 25.2, 24.7
Position 6–10:  24.3, 23.9, 26.1, 25.8, 24.5
Position 11–15: 27.2, 26.8, 25.4, 28.1, 27.6

A sensor failure was logged at position 13. 
Estimate the normal range for this position based on the neighboring values (11–12, 14–15).

Explicit position numbering lets you address specific elements precisely and ask the model to reason about particular indices.

10

Resources

Paper title: SepSeq: A Training-Free Framework for Long Numerical Sequence Processing in LLMs

Authors: Jie Sun, Yu Liu, Lu Han, Qiwen Deng, Xiang Shu, Yang Xiao, Xingyu Lu, Jun Zhou, Pengfei Liu, Lintao Ma, Jiancan Wu, Xiang Wang

Institutions: University of Science and Technology of China, Nanjing University, University of Edinburgh, East China Normal University, Hong Kong Polytechnic University, Zhejiang University, Ocean University of China, Shanghai Innovation Institute

Related work cited in the paper: SepLLM (Chen et al., 2024), StreamingLLM (Xiao et al., 2024), Chain-of-Thought prompting (Wei et al., 2023)

Research digest

Key result

Ask the model to “think step by step” and the result gets worse. CoT doesn’t help when the problem isn’t logic: 300 comma-separated numbers in a row are indistinguishable, and attention just spreads across the whole series. SepSeq lets you work precisely with long number series — finding maximums, growth streaks, anomalies — with zero fine-tuning. The trick: break the numbers into lines of 5–10 before you even send the prompt — the attention mechanism latches onto the breaks like anchors, and each block gets processed accurately. +35% accuracy on average, and it even uses fewer tokens than unformatted data.

Principle

Numbers in a series look alike: 1.87, 1.92, 1.84 — all the same face. Regular text is different: “cat,” “thunderstorm,” “San Francisco” — words carry different meanings, so there’s something to grab onto. When the model reads 300 nearly identical numbers, its attention doesn’t know where to look and spreads out evenly — that is, onto nothing in particular. To the model, a line break weighs more than a comma or a space — it pulls attention toward itself harder. Place those “anchors” every 5 numbers and the long mush becomes a series of short, crisp blocks. In each block the focus is sharp. Fewer errors.

Why it works

Numbers without structure are like a page of solid text with no paragraphs: the eye doesn’t know where to land and everything blurs together. When the model processes 300 comma-separated numbers, the attention weights spread evenly over the entire sequence — there are no points of concentration. Line breaks create explicit structure without a single extra word of instructions. The point: the problem was never the model’s intelligence, it was the data format — and that takes 30 seconds to fix. Meanwhile CoT (“think step by step”) barely helps on the same task. The model dutifully reasons about data it can’t properly see.

When to apply

Financial time series — revenue, exchange rates, stock quotes — especially when you need to find streaks or anomalies across 100+ data points. Sensor or metric readings — website traffic, temperature, server load. Analytics: find the max/min, compute trends, flag outliers in long series. NOT useful for series shorter than 30 numbers — attention doesn’t have time to scatter anyway. Works poorly on mixed data where numbers are interleaved with text.

Mini recipe

1. Check the length: under 30 numbers — no formatting needed, the model will cope on its own. 2. Pick a block size: 30–100 numbers → blocks of 10; 100–500 numbers → blocks of 5; over 500 → blocks of 3–5. 3. Split the data: insert a line break every k numbers right in the text before sending. 4. Add one hint line: “each line = 5 days” or “record 1 = line 1, position 1” — the model gets its bearings in the data. 5. Ask a concrete question: “find all growth streaks of 3+ days,” “give the position number with the maximum value” — the more precise the question, the more precise the answer.

Examples

[BAD]: `Here are 180 daily revenue values: 45, 52, 38, 61, 49, 44, 67, 71, 68, 55... [160 more numbers in a row]. Find growth streaks of 3 or more days.` [GOOD]: `Revenue for 180 days in thousands of dollars. Each line = 5 days: 45, 52, 38, 61, 49 44, 67, 71, 68, 55 42, 38, 77, 82, 91 88, 79, 65, 43, 41 ... Day 1 = the first number on the first line. Find all growth streaks of 3 or more days in a row — list the day numbers and values.`

In plain words

Language models get dumb on long lists of numbers not because they’re bad at math, but because their attention mechanism simply goes blind. When you feed a model a wall of hundreds of comma-separated numbers, it turns into gray noise where 1.87 is indistinguishable from 1.92. In normal text, words differ in meaning and shape, but in a number series everything blends into endless mush. So the model tries to keep everything in focus at once and in practice sees nothing, serving up hallucinations instead of analysis.

It’s like trying to read a book with all the spaces, paragraphs and punctuation stripped out, leaving just letters in one endless line. Technically the information is all there, but your brain melts within a minute. You keep losing your place and confusing similar characters. SepSeq is the crutch that gives the model its “eyesight” back by simply putting the right accents into that mush.

The core of SepSeq is almost embarrassingly simple: break a long sequence with line breaks every N numbers. No fine-tuning, no magic code — just structuring the input data right in the prompt. If you have 180 days of revenue data, don’t write it on one line. Split it into blocks, and the model suddenly “sees the light,” clearly spotting patterns and growth periods it used to fly right past.

Although the method was tested on financial series, the principle is universal for any data with lots of same-type items. Server logs, sensor readings, stock quotes or even long lists of SKUs — anywhere the model’s attention gets smeared, you need to drop in separators. It turns an unreadable dump into a structured table the LLM digests without losing context. 10 out of 10 cases show that structure beats volume.

Bottom line: if you want ChatGPT or Claude to actually analyze your numbers instead of politely making things up, ditch the “everything comma-separated” format. Use SepSeq — chop the data into chunks with line breaks. It’s the free, fastest way to boost accuracy on numbers without spending a dime on fine-tuning. Keep pouring data in as one solid wall of text and you’ll get garbage out while wondering why AI is so dumb.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on SepSeq: Formatting Number Sequences with Line Breaks for Accurate Calculations arXiv:2604.07737

Sign in to apply this study New accounts get 50 free credits.