• +598 29008192
  • info@servinfo.com.uy

Archivo del Autor: Belen De Leon

This Week in Apps: TikTok security check, app store cleanups, GameClub takes on Apple Arcade

Welcome back to This Week in Apps, the Extra Crunch series that recaps the latest OS news, the applications they support, and the money that flows through it all.

The app industry in 2018 saw 194 billion downloads and more than $100 billion in purchases. This past quarter, consumer spending exceeded $23 billion and installs topped 31 billion. And there’s no sign of the app economy slowing down.

But with app marketplaces growing this large and powerful, they’re also now coming under more scrutiny from government officials as this intersection between apps and politics can no longer be overlooked.

This week, U.S. Senators asked for a TikTok security check, Google hosted its Android Developer Summit, a whole bunch of malicious apps got booted off Google Play (and a few on the App Store, too.) Plus, a great alternative to Apple Arcade launched; it’s called GameClub and delivers some of the best App Store games for $5 per month.

Headlines

TikTok comes under more political pressure

The world’s most downloaded app, TikTok, continues to draw attention not for its fun skits and lip-synced songs, but for censorship issues and potential security risks. This week, Senate Democratic Leader Chuck Schumer (D-NY) and Senator Tom Cotton (R-AR) sent a letter (PDF) to Acting Director of National Intelligence Joseph Maguire, formally requesting that the Intelligence Community conduct an assessment of the national security risks posed by TikTok and other China-owned content platforms in the U.S.

GettyImages 1073256498 1

Their concerns revolved around the storage of U.S. TikTok user data (TikTok parent company ByteDance claims it’s in the U.S.), its data collection capabilities, censorship concerns, and the potential for the app to be a counterintelligence threat. As a Chinese-owned company, TikTok still has to adhere to Chinese law. That’s a potential problem. 

By the way, a press release circulated about the letter, which said the senators claimed TikTok was a “national security threat.” They actually did not write those words in the letter — and it’s a step beyond what they were claiming. The senators wanted a risk assessment performed.

The Office of the Director of National Intelligence declined to comment. TikTok said it was “carefully reviewing” the letter. Good thing they just hired those lawyers.

Apple CEO Tim Cook is now the top advisor to a business school called China’s Harvard

The issues around the App Store’s intersection with U.S. politics aren’t limited to TikTok.

Apple, already under scrutiny for removing a crowdsourced mapping app that showed police presence in Hong Kong, last week attracted a letter from a bipartisan group of U.S. lawmakers who urged to have the app reinstated. 

Now (with a lack of concern over the optics apparently), Apple CEO Tim Cook has been appointed as chairman of Tsinghua University’s business school advisory board. The university is known as “China’s Harvard,” and is one of the most country’s most elite institutions; Chinese President Xi Jinping is a noted alumnus. The university has a history of relationships with Western leaders — last year, Mark Zuckerberg, Elon Musk, and Satya Nadella were listed as board members, and its previous chairman was American VC Jim Breyer.

But given the issues around Apple’s capitulation to China’s demands to censor its App Store in the region — not to mention the U.S.-China trade war, or how Apple had told Apple TV+ showrunners not to anger China — everyone pretty much agrees it was not the best timing for this news.

Unfortunately for Apple, it can’t abandon China now, as it’s grown too dependent on its business there. As Vox recently reported:

Unlike tech companies that haven’t broken into the country or only do minor business in it, Apple is now so deep in China that leaving it could be catastrophic. Even if the company was willing to forgo the $44 billion a year in sales it makes in China, it can’t leave the deep network of suppliers and assemblers that build hundreds of millions of iPhones every year.

Millions of malicious apps get booted from Google Play…and malicious apps spotted on the App Store, too

Malicious apps were found on both Google Play and the App Store this week. But these stories are not at all the same.

Security researchers found dozens of Android apps in the Google Play store serving ads to unsuspecting victims as part of a money-making scheme. The 42 apps containing adware had been downloaded more than 8 million times since they first launched in July 2018. The apps were also sending back data about the user’s device, TechCrunch reported — including if certain apps are installed and if the device allows apps from non-app store sources — which could be used to install more malicious software.

Sadly, this kind of thing happens a lot on Google Play.

What’s less common, however, is to find malware on the App Store — which happened this week, when 17 malicious apps were removed.

Screen Shot 2019 10 22 at 12.52.56 PM 1024x502


Source: TechCrunch

London’s top consumer VCs share which trends they’re tracking

With 72 unicorns created since 2009 and $8.7 billion in venture funding last year, the UK is Europe’s leading startup hub.

Although it remains uncertain how Brexit will impact startups’ ease of recruiting and rapid scaling, initial pains are unlikely to displace London from its position as a global center for finance, media, retail, and technology.

As UK-based startups reach $1 billion (~£800 million) valuations at a rate of one per month, according to data from Dealroom, VC firms have raised $3.5 billion in new funds to fuel the next wave of investments.

Interested to learn where that capital could flow, I asked nine of London’s top consumer-focused VCs to find out which specific trends they’re using to identify startup investment opportunities:

  • Julia Hawkins, Partner at LocalGlobe
  • Lars Fjeldsoe-Nielsen, Partner at Balderton
  • Sonali De Rycker, Partner at Accel Partners
  • Christian Dorffer, Partner at Sweet Capital
  • Danny Rimer, Partner at Index Ventures
  • Reshma Sohoni, Managing Partner at Seedcamp
  • Niall Wass, Partner at Atomico
  • Paul Murphy, Partner at Northzone
  • Nic Brisbourne, Partner at Forward Partners

Their responses highlighted the diversify of funding interests in the ecosystem, but also show that banking, consumer health, transport, direct-to-consumer brands, and social entertainment remain hot areas.

Julia Hawkins, Partner at LocalGlobe

“I’m very focused on the healthtech sector and within consumer health, I’m particularly interested in the potential for digital therapeutics to enable people to gain control over habits and treat certain chronic conditions such as mental health. 

We’re thinking deeply about transportation, we’re already investors in Citymapper, Beryl and Voi and see the huge potential to improve how people move around cities and influence how urban centers are planned, all while reducing pollution.  

On that topic, we’re watching the climate change debate closely and I’m heartened by the fact that people everywhere are becoming wholly committed to reducing waste. Companies that can produce truly circular products for our families, homes and places of work I think will do well.

It’s an incredibly interesting time in media with titanic worlds of video, gaming and music are shifting and I believe in the transformative power of games, music and immersive experiences — TikTok and Fortnite show just how powerful these can be and I believe new platforms such as Playdeo will make consuming media and entertainment much more active experiences in the future.â€�

Lars Fjeldsoe-Nielsen, Partner at Balderton

“We are excited about the disruption within the European transportation sector, where we’ve seen new types of vehicles, like e-scooters from VOI, and amazing advances in autonomous mobility solutions. Time is up for car ownership in many city centers and competition is fierce for environmentally-friendly alternatives. This creates an exciting opportunity to use tech to improve public transport options and to leverage the sharing economy which Citymapper offers, as well as overhaul the car hire sector as new players like Virtuo are aiming to do.

We are also impressed by the continued innovation in the financial sector. We are long-time investors in fintech and have backed Revolut and GoCardless, amongst others. Traditional banks and financial incumbents are battling fragmented and outdated technology stacks to adapt to rapidly changing consumer demands, which creates a huge opportunity for startups.�

Sonali De Rycker, Partner at Accel Partners

“We’re excited about three key trends in consumer tech. The first is fintech, for which the UK has created a very supportive environment. A few large businesses are being built from London, like Monzo, buoyed by new rules written around retail banking and next generation financial services as well as huge, unmet customer demand.

The second is healthtech. Healthcare is a large and untapped opportunity plagued by rising costs for providers and deteriorating patient experience. We are seeing a few platform companies that are finding ways to successfully solve these problems by providing digital healthcare to consumers, like Kry out of Sweden.


Source: TechCrunch

Quantum computing’s ‘Hello World’ moment

Does quantum computing really exist? It’s fitting that for decades this field has been haunted by the fundamental uncertainty of whether it would, eventually, prove to be a wild goose chase. But Google has collapsed this nagging superposition with research not just demonstrating what’s called “quantum supremacy,” but more importantly showing that this also is only the very beginning of what quantum computers will eventually be capable of.

This is by all indications an important point in computing, but it is also very esoteric and technical in many ways. Consider, however, that in the 60s, the decision to build computers with electronic transistors must have seemed rather an esoteric point as well. Yet that was in a way the catalyst for the entire Information Age.

Most of us were not lucky enough to be involved with that decision or to understand why it was important at the time. We are lucky enough to be here now — but understanding takes a bit of explanation. The best place to start is perhaps with computing and physics pioneers Alan Turing and Richard Feynman.

‘Because nature isn’t classical, dammit’

The universal computing machine envisioned by Turing and others of his generation was brought to fruition during and after World War II, progressing from vacuum tubes to hand-built transistors to the densely packed chips we have today. With it evolved an idea of computing that essentially said: If it can be represented by numbers, we can simulate it.

That meant that cloud formation, object recognition, voice synthesis, 3D geometry, complex mathematics — all that and more could, with enough computing power, be accomplished on the standard processor-RAM-storage machines that had become the standard.

But there were exceptions. And although some were obscure things like mathematical paradoxes, it became clear as the field of quantum physics evolved that it may be one of them. It was Feynman who proposed in the early 80s that if you want to simulate a quantum system, you’ll need a quantum system to do it with.

“I’m not happy with all the analyses that go with just the classical theory, because nature isn’t classical, dammit, and if you want to make a simulation of nature, you’d better make it quantum mechanical,” he concluded, in his inimitable way. Classical computers, as he deemed what everyone else just called computers, were insufficient to the task.

GettyImages feynman

Richard Feynman made the right call, it turns out.

The problem? There was no such thing as a quantum computer, and no one had the slightest idea how to build one. But the gauntlet had been thrown, and it was like catnip to theorists and computer scientists, who since then have vied over the idea.

Could it be that with enough ordinary computing power, power on a scale Feynman could hardly imagine — data centers with yottabytes of storage and exaflops of processing — we can in fact simulate nature down to its smallest, spookiest levels?

Or could it be that with some types of problems you hit a wall, and that you can put every computer on Earth to a task and the progress bar will only tick forward a percentage point in a million years, if that?

And, if that’s the case, is it even possible to create a working computer that can solve that problem in a reasonable amount of time?

In order to prove Feynman correct, you would have to answer all of these questions. You’d have to show that there exists a problem that is not merely difficult for ordinary computers, but that is effectively impossible for them to solve even at incredible levels of power. And you would have to not just theorize but create a new computer that not just can but does solve that same problem.

By doing so you would not just prove a theory, you would open up an entirely new class of problem-solving, of theories that can be tested. It would be a moment when an entirely new field of computing first successfully printed “hello world” and was opened up for everyone in the world to use. And that is what the researchers at Google and NASA claim to have accomplished.

In which we skip over how it all actually works

google quantum team

One of the quantum computers in question. I talked with that fellow in the shorts about microwave amps and attenuators for a while.

Much has already been written on how quantum computing differs from traditional computing, and I’ll be publishing another story soon detailing Google’s approach. But some basics bear mentioning here.

Classical computers are built around transistors that, by holding or vacating a charge, signify either a 1 or a 0. By linking these transistors together into more complex formations they can represent data, or transform and combine it through logic gates like AND and NOR. With a complex language specific to digital computers that has evolved for decades, we can make them do all kinds of interesting things.

Quantum computers are actually quite similar in that they have a base unit that they perform logic on to perform various tasks. The difference is that the unit is more complex: a qubit, which represents a much more complex mathematical space than simply 0 or 1. Instead you may think of their state may be thought of as a location on a sphere, a point in 3D space. The logic is also more complicated, but still relatively basic (and helpfully still called gates): That point can be adjusted, flipped, and so on. Yet the qubit when observed is also digital, providing what amounts to either a 0 or 1 value.

By virtue of representing a value in a richer mathematical space, these qubits and manipulations thereof can perform new and interesting tasks, including some which, as Google shows, we had no ability to do before.

A quantum of contrivance

In order to accomplish the tripartite task summarized above, first the team had to find a task that classical computers found difficult but that should be relatively easy for a quantum computer to do. The problem they settled on is in a way laughably contrived: Being a quantum computer.

In a way it makes you want to just stop reading, right? Of course a quantum computer is going to be better at being itself than an ordinary computer will be. But it’s not actually that simple.

Think of a cool old piece of electronics — an Atari 800. Sure, it’s very good at being itself and running its programs and so on. But any modern computer can simulate an Atari 800 so well that it could run those programs in orders of magnitude less time. For that matter, a modern computer can be simulated by a supercomputer in much the same way.

Furthermore, there are already ways of simulating quantum computers — they were developed in tandem with real quantum hardware so performance could be compared to theory. These simulators and the hardware they simulate differ widely, and have been greatly improved in recent years as quantum computing became more than a hobby for major companies and research institutions.

qubit lattice

This shows the “lattice” of qubits as they were connected during the experiment (colored by the amount of error they contributed, which you don’t need to know about.)

To be specific, the problem was simulating the output of a random sequence of gates and qubits in a quantum computer. Briefly stated, when a circuit of qubits does something, the result is, like other computers, a sequence of 0s and 1s. If it isn’t calculating something in particular, those numbers will be random — but crucially, they are “random” in a very specific, predictable way.

Think of a pachinko ball falling through its gauntlet of pins, holes and ramps. The path it takes is random in a way, but if you drop 10,000 balls from the exact same position into the exact same maze, there will be patterns in where they come out at the bottom — a spread of probabilities, perhaps more at the center and less at the edges. If you were to simulate that pachinko machine on a computer, you could test whether your simulation is accurate by comparing the output of 10,000 virtual drops with 10,000 real ones.

It’s the same with simulating a quantum computer, though of course rather more complex. Ultimately however the computer is doing the same thing: simulating a physical process and predicting the results. And like the pachinko simulator, its accuracy can be tested by running the real thing and comparing those results.

But just as it is easier to simulate a simple pachinko machine than a complex one, it’s easier to simulate a handful of qubits than a lot of them. After all, qubits are already complex. And when you get into questions of interference, slight errors and which direction they’d go, etc. — there are, in fact, so many factors that Feynman decided at some point you wouldn’t be able to account for them all. And at that point you would have entered the realm where only a quantum computer can do so — the realm of “quantum supremacy.”

Exponential please, and make it a double

After 1,400 words, there’s the phrase everyone else put right in the headline. Why? Because quantum supremacy may sound grand, but it’s only a small part of what was accomplished, and in fact this result in particular may not last forever as an example of having reached those lofty heights. But to continue.

Google’s setup, then, was simple. Set up randomly created circuits of qubits, both in its quantum computer and in the simulator. Start simple with a few qubits doing a handful of operational cycles and compare the time it takes to produce results.

Bear in mind that the simulator is not running on a laptop next to the fridge-sized quantum computer, but on Summit — a supercomputer at Oak Ridge National Lab currently rated as the most powerful single processing system in the world, and not by a little. It has 2.4 million processing cores, a little under 3 petabytes of memory, and hits about 150 petaflops.

At these early stages, the simulator and the quantum computer happily agreed — the numbers they spat out, the probability spreads, were the same, over and over.

But as more qubits and more complexity got added to the system, the time the simulator took to produce its prediction increased. That’s to be expected, just like a bigger pachinko machine. At first the times for actually executing the calculation and simulating it may have been comparable — a matter of seconds or minutes. But those numbers soon grew hour by hour as they worked their way up to 54 qubits.

When it got to the point where it took the simulator five hours to verify the quantum computer’s result, Google changed its tack. Because more qubits isn’t the only way quantum computing gets more complex (and besides, they couldn’t add any more to their current hardware). Instead, they started performing more rounds of operations with a given circuit, which adds all kinds of complexity to the simulation for a lot of reasons that I couldn’t possibly explain.

For the quantum computer, doing another round of calculations takes a fraction of a second, and even multiplied by thousands of times to get the required number of runs to produce usable probability numbers, it only ended up taking the machine several extra seconds.

schroed feyn chart

You know it’s real because there’s a chart. The dotted line (added by me) is the approximate path the team took, first adding qubits (x-axis) and then complexity (y-axis).

For the simulator, verifying these results took a week — a week, on the most powerful computer in the world.

At that point the team had to stop doing the actual simulator testing, since it was so time-consuming and expensive. Yet even so, no one really claimed that they had achieved “quantum supremacy.” After all, it may have taken the biggest classical computer ever created thousands of times longer, but it was still getting done.

So they cranked the dial up another couple notches. 54 qubits, doing 25 cycles, took Google’s Sycamore system 200 seconds. Extrapolating from its earlier results, the team estimated that it would take Summit 10,000 years.

What happened is what the team called double exponential increase. It turns out that adding qubits and cycles to a quantum computer adds a few microseconds or seconds every time — a linear increase. But every qubit you add to a simulated system makes that simulation exponentially more costly to run, and it’s the same story with cycles.

Imagine if you had to do whatever number of push-ups I did, squared, then squared again. If I did 1, you would do 1. If I did 2, you’d do 16. So far no problem. But by the time I get to 10, I’d be waiting for weeks while you finish your 10,000 push-ups. It’s not exactly analogous to Sycamore and Summit, since adding qubits and cycles had different and varying exponential difficulty increases, but you get the idea. At some point you can have to call it. And Google called it when the most powerful computer in the world would still be working on something when in all likelihood this planet will be a smoking ruin.

It’s worth mentioning here that this result does in a way depend on the current state of supercomputers and simulation techniques, which could very well improve. In fact IBM published a paper just before Google’s announcement suggesting that theoretically it could reduce the time necessary for the task described significantly. But it seems unlikely that they’re going to improve by multiple orders of magnitude and threaten quantum supremacy again. After all, if you add a few more qubits or cycles, it gets multiple orders of magnitude harder again. Even so, advances on the classical front are both welcome and necessary for further quantum development.

‘Sputnik didn’t do much, either’

So the quantum computer beat the classical one soundly on the most contrived, lopsided task imaginable, like pitting an apple versus an orange in a “best citrus” competition. So what?

Well, as founder of Google’s Quantum AI lab Hartmut Neven pointed out, “Sputnik didn’t do much either. It just circled the Earth and beeped.” And yet we always talk about an industry having its “Sputnik moment” — because that was when something went from theory to reality, and began the long march from reality to banality.

2019 SB Google 0781

The ritual passing of the quantum computing core.

That seemed to be the attitude of the others on the team I talked with at Google’s quantum computing ground zero near Santa Barbara. Quantum superiority is nice, they said, but it’s what they learned in the process that mattered, by confirming that what they were doing wasn’t pointless.

Basically it’s possible that a result like theirs could be achieved whether or not quantum computing really has a future. Pointing to one of the dozens of nearly incomprehensible graphs and diagrams I was treated to that day, hardware lead and longtime quantum theorist John Martines explained one crucial result: The quantum computer wasn’t doing anything weird and unexpected.

This is very important when doing something completely new. It was entirely possible that in the process of connecting dozens of qubits and forcing them to dance to the tune of the control systems, flipping, entangling, disengaging, and so on — well, something might happen.

Maybe it would turn out that systems with more than 14 entangled qubits in the circuit produce a large amount of interference that breaks the operation. Maybe some unknown force would cause sequential qubit photons to affect one another. Maybe sequential gates of certain types would cause the qubit to decohere and break the circuit. It’s these unknown unknowns that have caused so much doubt over whether, as asked at the beginning, quantum computing really exists as anything more than a parlor trick.

Imagine if they discovered that in digital computers, if you linked too many transistors together, they all spontaneously lost their charge and went to 0. That would put a huge limitation on what a transistor-based digital computer was capable of doing. Until now, no one knew if such a limitation existed for quantum computers.

“There’s no new physics out there that will cause this to fail. That’s a big takeaway,” said Martines. “We see the same errors whether we have a simple circuit or complex one, meaning the errors are not dependent on computational complexity or entanglement — which means the complex quantum computing going on doesn’t have fragility to it because you’re doing a complex computation.”

They operated a quantum computer at complexities higher than ever before, and nothing weird happens. And based on their observations and tests, they found that there’s no reason to believe they can’t take this same scheme up to, say, a thousand qubits and even greater complexity.

Hello world

That is the true accomplishment of the work the research team did. They found out, in the process of achieving the rather overhyped milestone of quantum superiority, that quantum computers are something that can continue to get better and to achieve more than simply an interesting experimental results.

This was by no means a given — like everything else in the world, quantum or classical, it’s all theoretical until you test it.

It means that sometime soonish, though no one can really say when, quantum computers will be something people will use to accomplish real tasks. From here on out, it’s a matter of getting better, not proving the possibility; of writing code, not theorizing whether code can be executed.

It’s going from Feynman’s proposal that a quantum computer will be needed to using a quantum computer for whatever you need it for. It’s the “hello world” moment for quantum computing.

Feynman, by the way, would probably not be surprised. He knew he was right.

Google’s paper describing their work was published in the journal Nature. You can read it here.


Source: TechCrunch

Space Photos of the Week: Moon Walks for Moon Rocks

A look back at what the crews of the Apollo missions photographed on the surface of the moon.
Source: Wired

Rudy Giuliani Butt-Dialed a Reporter (Twice!)

A UN phishing attack, Adobe accounts exposed, and more of the week’s top security news.
Source: Wired

What Google knows about you may be a shock. Here's how to manage or delete your activity – CNET

Everything you do while signed into Google, and even some stuff when you aren’t, becomes a part of your Google profile.
Source: CNET

Basepaws' $99 Cat DNA Test Tells You What's Truly Wrong With Your Cat

Why is your cat such a freak? This at-home DNA test can’t tell you that, but it can reveal some information about its health and heritage.
Source: Wired

'The Rise of Jordan Peterson' Doesn't Tell You What to Think

The documentary explores how the bestselling author has been both celebrated and reviled. 
Source: Wired

Finally, Gmail dark mode is here for Android and iOS phones. How to turn it – CNET

Here’s how to turn on Gmail’s dark mode in Android 10 and iOS and on your iPhone.
Source: CNET

Lamborghini is sending carbon fiber to the International Space Station – Roadshow

The Italian supercar manufacturer hopes to explore the effects of cosmic radiation on its composites.
Source: CNET

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533