a:6:{i:0;s:21756:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Andaman Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.mastoursandtravels.co.in/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.mastoursandtravels.co.in/tour-packages.htm" title="Tour packages">Tour packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Andaman Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					
											<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Andaman,</p>
												<p class="mb5px"><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.mastoursandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="182348"/>
						</form>
						
												</p>
											</td>
											<td class="p10px vat imgWidth200 w200px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w200px h200px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_19/547313/276351.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_19/547313/276351.jpg"  width="150" height="104"    alt="Andaman Tour" title="Andaman Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
													<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Tour Detail</p>
								</div>
													
								Our World today, has been invaded and conquered in the search for beauty, to beet into souvenirs and photographs; and we’re led to believe that what iscaptured and to be seen, has been seen already. But we could not be more mistaken. Many have traversed the off trodden paths towards a Vacation of Leisure or Labor. And yet there is world out there - of endless possibilities, of untouched, glorious beauty - just waiting to be explored. We, at Mas Tours, invite you to join us, and view the world through our eyes; to travel the path less travelled, to where the real beauty lies. Come, Let’s Explore the exotic World beauty of Andaman untouched paradises,  A group of pictorial islands surrounded by the emerald green waters of the Bay of Bengal, magical Andaman is an ideal destination for those who want to soak into pristine nature, primeval jungle, mangrove forest & snow-white beaches. Originating from Port Blair this Andaman tour takes you to some of the most stunning islands, Havelock, Baratang and Chidiyatapu beach. Witnessing the setting sun at Radhanagar Beach in Havelock is one of the most delightful moments of this tour. Above all, on the occasion of Veer Savarkar Punyatithi you also visit Cellular Jail, a symbol of India’s freedom struggle and revisit our glorious history in the Sound and Light Show on the jail premises. A treasure trove for the nature, beach and history lovers, Andaman is an ideal holiday spot to spend quality time with your friends and families Andaman and Nicobar have rich history dating back since 800 BC. These Islands are one of the famous Islands in the world and they have the best beaches in India. This must visit destination is a good place for vacationing but let us learn a thing or two about this paradise. The indigenous population called Andamanese and Nicobarese inhabit these Islands. The Islands of Andaman and Nicobar have five indigenous tribes that are still living in these parts like Jharwas (Jarawas), Onges, The Great Andamanese, Shompens, Sentenelese. The common languages they spoke were Onge, Andamanese, Sentinelese, Jarawa and Nicobarese. In addition to the tribal’s of the Island, it was believed that the Andaman Islands were descendants of African slaves that arrived in this Island after a shipwreck while being carried on board on a Portuguese ship, however, most of the anthropologist's sum-up with the fact that they are not Negros but Negritos. For years, the Andaman and Nicobar Islands have seen many faces from India’s First War of Independence that took place in the year 1857 to the Japanese Invasion during the 2nd World War. But with the coming of Indian Independence in the year 1947, these islands Andaman and Nicobar were united with the Indian mainstream. Today, you will find, its past relics, artifacts and ruins around the Island, in the museum of Cellular Jail in Andaman. For ages, the Andamans have been nicknamed as Kala Paani because of its cellular Jail. Earlier, Andaman used to be a prison central to take away the prisoners far from the mainland. Today, this Cellular Jail sources as a prime attraction for tourists.								</div>
								<br />
																<div class="headHr">
					            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
					            </div>
					            
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 1:</b> Andaman
										</p>
										<p class="aj">Arrive At Port Blair in the Morning/afternoon By Flight and Our Representative Will Be Waiting Outside Holding a Placard with Your Name On It. You Will Be Taken to Your Hotel Where You Relax and Rest. Post Lunch Will Proceed to One among the Most Visited Attraction in Andaman Islands, Cellular Jail. this Jail Before India's Independence Hosted the Most Ferocious Prisoners in the Andaman Islands. Today this Jail Stands as a National Memorial. Visit to this Historic Attractions and Know About the Rich History of the Andaman Islands ,Then Move Towards Corbyn's Cove Beach . the Crescent Shaped Coconut Palm Fringed Corbyn's Cove Ideal for Swimming & Bathing. Coastal Drive to this Beach is Awesome; a Stretch of Around 4 Km with An Open Sea Towards Your Left is a Sight to Experience. Take Pit Stops During this Ride to Click Pictures and to Explore the Beauty. Later Proceed to Attend the Enthralling Sound and Light Show At Cellular Jail - Where the Heroic Saga of the Indian Freedom Struggle is Brought Alive. Enacting of Freedom Fighters and Their Struggle for India's Independence is Enacted During this Trip. Post Completion of this Trip, We Drop You Back to Your Hotel.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 2:</b> Andaman
										</p>
										<p class="aj">Visit the Administrative Capital Prior to Independence from Where the Britishers Governed the Entire a & N Islands-ross Island, a Destination for Nature Walk Amidst Friendly Deer’s & Peacocks. Smritika Museum Records the Life of Its Political Prisoners. Explore the Ruins of the Island from Where Britishers Once Governed the Entire Andaman and Nicobar Islands. Then Begin Your Excursion to North Bay - Coral Island with Glass Bottom Boat Ride. Here One Can Explore the Coral Reefs Underwater. the Lighthouse Seen in North Bay Island Trip is the Same that is Seen in the Back of a 20 Rupee Note. Snorkeling, Scuba Diving and Sea Walk Can Be Done Here as Well. Note: There is No Bottled Water Sold On Ross Island and Hence We Would Recommend You to Carry Bottled Water with You and Cold Filtered Water is Available At Ross Island Ticket Counter At No Cost. Ross Island is Closed On Wednesday. if Your Tour Falls On Wednesday We Would Interchange It with the Previous Days Plan.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 3:</b> Andaman
										</p>
										<p class="aj">Today We Depart to Andaman Islands Most Amazing Destination, Havelock Island. the Destination is Rated as the Best Island in India. Depart from Port Blair to Havelock Island in a Ferry. Upon Reaching Havelock, Our Representative Attends You and Will Drop You At Your Hotel. Rest and Relax in a Beachside Resort. We At Experience Andamans Only Share Beach Side Resorts for Exquisite Experiences. Later We Begin Our Journey to One among Asia's Best Beach, Radhanagar Beach Same Day Return to Port Blair Explore this White Sand Beach and Bask in the Beauty of this Natural Wonder. Post this We Drop You Back to Your Resort Where You Relax and Unwind.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 4:</b> Port Blair
										</p>
										<p class="aj">Depart from Port Blair to Baratang Island (200 Kms) By Road Through the Dense Tropical Forest and Jarawa Tribal Reserve. Often You Might See a Member of the Jarawa Tribe While Passing Through the Tribal Reserve. On Your Journey You Will Take the Route of Andaman Grand Trunk Road to Baratang Where You Can Visit a Short Trip to Lime Stone Cave and Return Back to Port Blair.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 5:</b> Port Blair
										</p>
										<p class="aj">Return Home with Sweet Memories of These Mesmerizing Islands.</p>
										</td>
										</tr>
										</table>					
										</div>								<br />
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>MAP (Room + Breakfast + Lunch/Dinner)</li>
																						<li>Hotel</li>
																						<li>Meals</li>
																						<li>Sightseeing</li>
																			</ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.</li></ul>					
								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
								
						<ul><li>* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date.</li></ul>			
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.mastoursandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="182348"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-port-blair.htm" title="Packages in Port Blair">Port Blair</a> <b class="alpha50 bn small">(42)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-havelock.htm" title="Packages in Havelock">Havelock</a> <b class="alpha50 bn small">(41)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-genting.htm" title="Packages in Genting">Genting</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-chennai.htm" title="Packages in Chennai">Chennai</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-mumbai.htm" title="Packages in Mumbai">Mumbai</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-kolkata.htm" title="Packages in Kolkata">Kolkata</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-shirdi.htm" title="Packages in Shirdi">Shirdi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-ohio.htm" title="Packages in Ohio">Ohio</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-sangli.htm" title="Packages in Sangli">Sangli</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-aizawl.htm" title="Packages in Aizawl">Aizawl</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-pune.htm" title="Packages in Pune">Pune</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-agartala.htm" title="Packages in Agartala">Agartala</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-hyderabad.htm" title="Packages in Hyderabad">Hyderabad</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-massachusetts.htm" title="Packages in Massachusetts">Massachusetts</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-satara.htm" title="Packages in Satara">Satara</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-ranchi.htm" title="Packages in Ranchi">Ranchi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-panchgani.htm" title="Packages in Panchgani">Panchgani</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-dimapur.htm" title="Packages in Dimapur">Dimapur</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-mahabaleshwar.htm" title="Packages in Mahabaleshwar">Mahabaleshwar</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-imphal.htm" title="Packages in Imphal">Imphal</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/beach-islands-holidays-catid.htm" title="Beach and Islands Packages">Beach and Islands</a> <b class="alpha50 bn small">(47)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/national-parks-holidays-catid.htm" title="National Parks Packages">National Parks</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/wildlife-nature-holidays-catid.htm" title="Wildlife and Nature Packages">Wildlife and Nature</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/snorkeling-holidays-catid.htm" title="Snorkeling Packages">Snorkeling</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/parasailing-holidays-catid.htm" title="Parasailing Packages">Parasailing</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/scuba-diving-holidays-catid.htm" title="Scuba Diving Packages">Scuba Diving</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/camping-holidays-catid.htm" title="Camping Packages">Camping</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/boating-holidays-catid.htm" title="Boating Packages">Boating</a> <b class="alpha50 bn small">(1)</b></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
								
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:51:"Book Andaman Tour - 4 Nights / 5 Days Tour Packages";i:2;s:91:"book andaman tour - 4 nights / 5 days tour packages,  tour packages, andaman, tour packages";i:3;s:129:"Mas Tours and Travels offers Andaman Tour - 4 Nights / 5 Days tour package, budget  tour packages for Andaman, at exciting price.";i:4;s:3527:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Andaman,"        
		                 },
		      "description": "Our World today, has been invaded and conquered in the search for beauty, to beet into souvenirs and photographs; and we’re led to believe that what iscaptured and to be seen, has been seen already. But we could not be more mistaken. Many have traversed the off trodden paths towards a Vacation of Leisure or Labor. And yet there is world out there - of endless possibilities, of untouched, glorious beauty - just waiting to be explored. We, at Mas Tours, invite you to join us, and view the world through our eyes; to travel the path less travelled, to where the real beauty lies. Come, Let’s Explore the exotic World beauty of Andaman untouched paradises,  A group of pictorial islands surrounded by the emerald green waters of the Bay of Bengal, magical Andaman is an ideal destination for those who want to soak into pristine nature, primeval jungle, mangrove forest & snow-white beaches. Originating from Port Blair this Andaman tour takes you to some of the most stunning islands, Havelock, Baratang and Chidiyatapu beach. Witnessing the setting sun at Radhanagar Beach in Havelock is one of the most delightful moments of this tour. Above all, on the occasion of Veer Savarkar Punyatithi you also visit Cellular Jail, a symbol of India’s freedom struggle and revisit our glorious history in the Sound and Light Show on the jail premises. A treasure trove for the nature, beach and history lovers, Andaman is an ideal holiday spot to spend quality time with your friends and families Andaman and Nicobar have rich history dating back since 800 BC. These Islands are one of the famous Islands in the world and they have the best beaches in India. This must visit destination is a good place for vacationing but let us learn a thing or two about this paradise. The indigenous population called Andamanese and Nicobarese inhabit these Islands. The Islands of Andaman and Nicobar have five indigenous tribes that are still living in these parts like Jharwas (Jarawas), Onges, The Great Andamanese, Shompens, Sentenelese. The common languages they spoke were Onge, Andamanese, Sentinelese, Jarawa and Nicobarese. In addition to the tribal’s of the Island, it was believed that the Andaman Islands were descendants of African slaves that arrived in this Island after a shipwreck while being carried on board on a Portuguese ship, however, most of the anthropologist's sum-up with the fact that they are not Negros but Negritos. For years, the Andaman and Nicobar Islands have seen many faces from India’s First War of Independence that took place in the year 1857 to the Japanese Invasion during the 2nd World War. But with the coming of Indian Independence in the year 1947, these islands Andaman and Nicobar were united with the Indian mainstream. Today, you will find, its past relics, artifacts and ruins around the Island, in the museum of Cellular Jail in Andaman. For ages, the Andamans have been nicknamed as Kala Paani because of its cellular Jail. Earlier, Andaman used to be a prison central to take away the prisoners far from the mainland. Today, this Cellular Jail sources as a prime attraction for tourists.",
		      "name": "Andaman Tour",
		      "telephone": "+91-9567775818"
		    }
		    </script>
			";i:5;N;}